Dan Jacobson <[EMAIL PROTECTED]> writes:

> Just thought you might like to see how I append files to my CDs, a
> multitrack backup CD.  My hair is turning grey in no coincidence to
> the trial and error involved.  I step thru it and it actually works.
> You know what's neat?  How the windows users just pop in the disks
> like on the Nero screen, whilst us Linux Debian users get
> /usr/share/doc/cdrecord/README.ATAPI.gz boot camp, if indeed we still
> have the 'cells to comprehend it.

Just use xcdroast.
 
> #Makefile:
> sec=/home/jidanni/tmp/first_dir/second_dir
> a19copy: #must be root
>       -rm $(sec)/*
>       find /var/tmp/*bkp*.bz2 -mtime -1 -print -exec cp -p {} $(sec) \;
>         #cp a cpio backup into the empty 'second dir', then

I suggest using afio. It compresses single files, not the whole archive,
which makes the backups less vulnerable. It is compatibel with cpio.

> insmod: #2002.7 must have disk in recorder
>       insmod ide-scsi #debian, else bananas. in lilo.conf I appended stuff too

I would compile this into the kernel (not as module).
 
> debdev=0,0,0
> a19: #must have disk in recorder, silly me
>       -mount /cdrom
>       set -x;Z=`cdrecord -msinfo dev=$(debdev)` && \
>       mkisofs -v -o ../tmp/isoimage_2.raw -r -C $$Z -M /dev/cdrom.. /tmp/first_dir

You do not need to mount a disk to used it with cdrecord and mkisofs.
What do you do with a blank disc?

,----[ mount /cdrw ]
| mount: wrong fs type, bad option, bad superblock on /dev/cdrw,
|        or too many mounted file systems
`----

,----[ cdrecord dev=0,0,0 -msinfo ]
| cdrecord: Input/output error. read toc: scsi sendcmd: no error
| CDB:  43 00 01 00 00 00 00 00 04 00
| status: 0x2 (CHECK CONDITION)
| Sense Bytes: 70 00 05 00 00 00 00 0C 00 00 00 00 24 00 00 00
| Sense Key: 0x5 Illegal Request, Segment 0
| Sense Code: 0x24 Qual 0x00 (invalid field in cdb) Fru 0x0
| Sense flags: Blk 0 (not valid) 
| cmd finished after 0.003s timeout 40s
| cdrecord: Cannot read session offset
`----

> a19d:
>       -mount /cdrom #I forgot if needed
>       #needed fs=4m otherwise it can't read it out of the default file
>       cdrecord fs=4m -dummy -v -multi ../tmp/isoimage_2.raw

Where is dev=0,0,0?

,----[ cdrecord fs=4m -dummy -v -multi ~/../image-dir/Backup_31_08_2002.iso ]
| cdrecord: No CD/DVD-Recorder device specified.
| Usage: cdrecord [options] track1...trackn
| 
| Use   cdrecord -help
| to get a list of valid options.
| 
| Use   cdrecord blank=help
| to get a list of valid blanking options.
`----

> ##did you make room infront of the computer as the disk will get
> #ejected (a male thing, else no guarantee of success) after this:
> #also don't do any other stuff at the same time to slow this down!
> a19w:
> #Must unmount first otherwise it will think it is read only no matter
> #what you do in fstab or -o rw etc.  Also you will think you burned ok
> #but it didn't burn at all
>       -umount /cdrom
>       #needed fs=4m otherwise it can't read it out of the default file
>       cdrecord fs=4m -v -multi -eject ../tmp/isoimage_2.raw

See above.

I use this for my personal box, saved my ass a couple of times. Comments
and suggestions apreciated:

,----[ less ~/Skripte/backup.sh ]
| #!/bin/bash
| # -*- mode: Shell-script -*-
| #-------------------------------------------------------------------------------
| #
| # Create afio backups of specific directorys, create a cd image file of those 
| # backups and write them to a multi session cd.
| #
| # You need: sudo, afio, gzip, tr, mkisofs, cdrecord and a brain. A CD should be 
| #           placed in the writer prior to execution of this script.           
| #
| #-------------------------------------------------------------------------------
| Backup_Dir=/home/Backup
| Image_Dir=/home/image-dir
| CD_Dir=Backup_`date +%d_%m_%Y`
| Image_Name=${Image_Dir}/${CD_Dir}.iso
| 
| #-------------------------------------------------------------------------------
| # Create an afio backup of directory given in $1 with file name $Backup_Name.
| backup_dir()
| {
|     if [ -d $1 ]; then
|       echo "-> Backup of directory: $1"
|       echo -n "   "
| 
|       Backup_Name=${Backup_Dir}/`echo -n $1 | tr // _`_`date +%d_%m_%Y`.afio
|       sudo find $1 | sudo afio -o -x -z -A -G 9 -Z $Backup_Name
| 
|       if [ $? != 0 ]; then
|           echo
|           echo "-> ** Aborting **"
|           exit 1
|       fi
|     else
|       echo
|       echo "-> $1 does not exist!"
|       echo "-> ** Aborting **"
|       exit 1
|     fi
| }
| 
| #-------------------------------------------------------------------------------
| # Creates a RockRidge/Joliet cd image file that can either be the first track
| # of a multi session cd or be appended to a multi session cd. The files are 
| # taken from $Backup_Dir. All files with extension .afio will be placed in the
| # image relative to $CD_Dir. The image file will be placed in $Image_Dir with
| # name $Image_Name.
| make_image()
| {
|     echo -n "Is this to be the first multi session track on this disk? [y/n]: "
|     read ans
| 
|     case "$ans" in
|       n*|N*)
|           echo "-> Running cdrecord to retrieve multi session info"
| 
|           msinfo=`cdrecord dev=0,0,0 -msinfo`
| 
|           if [ ! -z $msinfo ]; then
|               echo "-> cdrecord returned: $msinfo"
|               echo "-> Running mkisofs:"
|               echo
| 
|               find $Backup_Dir -name *.afio -exec echo "${CD_Dir}/="{} \; | \
|               mkisofs -r -J -l -M 0,0,0 -C $msinfo -V Backup -o $Image_Name \
|                       -graft-points -path-list -
|               if [ $? != 0 ]; then
|                   echo
|                   echo "-> ** Aborting **"
|                   exit 1
|               fi
|           else
|               echo
|               echo "-> ** Aborting **"
|               exit 1;
|           fi
|       ;;
|       y*|Y*)
|           echo "-> Running mkisofs:"
|           echo
| 
|           find $Backup_Dir -name *.afio -exec echo "${CD_Dir}/="{} \; | \
|           mkisofs -r -J -l -V Backup -o $Image_Name -graft-points -path-list -
| 
|           if [ $? != 0 ]; then
|               echo
|               echo "-> ** Aborting **"
|               exit 1
|           fi
|       ;;
|     esac
| }
| 
| #-------------------------------------------------------------------------------
| # Writes $Image_Name to a multi session cd.
| write_image()
| {
|     echo -n "Shall the image be written? [y/n]: "
|     read ans
| 
|     case "$ans" in
|       y*|Y*)
|           echo -n "Is this the last track for this multisession cd? [y/n]: "
|           read ans
|           
|           case "$ans" in
|               y*|Y*)
|                   echo "-> Running cdrecord to write last track to disk:"
|                   echo
| 
|                   sudo cdrecord -v fs=8m -eject -speed 4 dev=0,0,0 $Image_Name
| 
|                   if [ $? != 0 ]; then
|                       echo
|                       echo "-> ** Aborting **"
|                       exit 1
|                   fi
|                 ;;
|               *)
|                   echo "-> Running cdrecord to append track to disk:"
|                   echo
| 
|                   sudo cdrecord -v fs=8m -multi -eject -speed 4 dev=0,0,0 \
|                                 $Image_Name
| 
|                   if [ $? != 0 ]; then
|                       echo
|                       echo "-> ** Aborting **"
|                       exit 1
|                   fi
|               ;;
|               
|           esac
|       ;;
|       *)
|       ;;
|     esac
| }
| 
| Cur_Dir=$PWD
| cd /
| 
| echo "-> Stopping cron:"
| echo -n "   "
| 
| sudo etc/init.d/cron stop
| 
| echo
| 
| backup_dir boot
| backup_dir dev
| backup_dir etc
| backup_dir home/Debian
| backup_dir home/udo
| backup_dir lib/modules
| backup_dir root
| backup_dir usr/local
| backup_dir var/games
| backup_dir var/lib
| backup_dir var/spool
| 
| echo
| echo "-> Restarting cron:"
| echo -n "   "
| 
| sudo etc/init.d/cron start
| 
| echo
| 
| make_image
| 
| echo
| 
| write_image
| 
| cd $Cur_Dir
| 
| exit 0
`----

Tschoe Udo.

-- 
Zu vermieten.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED] 
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to