#!/bin/sh # You will need to tailor the following to suit your own hostname and CD # writer device. case `hostname` in titch) ImageFileDirectory=/masters/CD-IMAGES ImageFileName=cd-data-image-iso Device=1,0,0 DeviceFile=/dev/cdrom Speed=48 ;; carousel) ImageFileDirectory=/local/cd-images ImageFileName=cd-image-iso Device=0,0,0 DeviceFile=/dev/cdrom1 Speed=16 ;; *) echo "You must be on the right host to run this!" exit 1 ;; esac MaxVOLID=32 if test ! -r $DeviceFile then echo "You have no read permission on $DeviceFile" exit 1 fi case $1 in -i) case $2 in "") echo "No image name" exit ;; *) ImageFileName="$2" shift 2 ;; esac esac Blank=FAST case $1 in -bf) Blank=FAST shift ;; -bn) Blank=NONE shift ;; -ba) Blank=ALL shift ;; esac SymLinkFollow="" case $1 in -lf) SymLinkFollow="-f" shift ;; esac WriteCount=1 case $1 in -wc) case $2 in "") echo "No write count" exit ;; *) WriteCount="$2" shift 2 ;; esac esac VerifyOnly=false case $1 in -vo) VerifyOnly=true shift ;; esac MakeImage=true case $1 in -nm) MakeImage=false shift ;; esac RockRidge="-r" case $1 in -R) RockRidge="-R" shift ;; esac case "$ImageFileName" in /*) ;; *) ImageFileName="$ImageFileDirectory/$ImageFileName" ;; esac if $MakeImage then case $1 in "") echo "Usage $0 [options] [ -nm | directory ... ]" exit 1 ;; esac APPI=`cd $1; basename \`pwd\`` APPI=$APPI" `date \"+%a %d %b %Y\"`" VOLID=`echo $APPI|cut -c1-$MaxVOLID` #mkisofs -R -J -o $ImageFileName "$@" 2>&1 | egrep -v "^Using" mkisofs -A "$APPI" -V "$VOLID" $RockRidge -J $SymLinkFollow \ -o $ImageFileName "$@" 2>&1 \ | egrep -v "^Using" #Entry already in /etc/fstab: #/pops-local/CD-IMAGES/cd-data-image-iso /mnt/cd-image-iso iso9660 loop=/dev/loop1,user,noauto 0 0 mount /mnt/cd-image-iso cd /mnt/cd-image-iso echo "Check the CD image now, and then exit this shell." $SHELL cd $ImageFileDirectory umount /mnt/cd-image-iso else case $1 in "") ;; *) echo "Usage $0 [options] [ -nm | directory ... ]" exit 1 ;; esac fi NoOfWrites=0 while test "$NoOfWrites" -lt "$WriteCount" do Action=write $VerifyOnly && Action=verify NoOfWrites=$[$NoOfWrites + 1] echo "About to $Action copy number $NoOfWrites out of $WriteCount copies" echo " of $ImageFileName." echo "Press enter when (RE)WRITABLE CD is mounted" read X if ! $VerifyOnly then case $Blank in ALL) cdrecord blank=all -v speed=$Speed dev=$Device -data $ImageFileName ;; FAST) cdrecord blank=fast -v speed=$Speed dev=$Device -data $ImageFileName ;; NONE) cdrecord -v speed=$Speed dev=$Device -data $ImageFileName ;; esac echo "Opening CD drive to ensure good status..." eject $DeviceFile fi echo "Verifying..." NoOfBlocks=$[`wc -c < $ImageFileName` / 2048] if dd if=$DeviceFile bs=2048 count=$NoOfBlocks \ | ( BlocksLeft=$NoOfBlocks BlocksDone=0 Percent=0 while test $Percent -lt 100 \ && ThisTime=$[$BlocksLeft / (100 - $Percent)] \ && dd bs=2048 count=$ThisTime 2>/dev/null do Percent=$[$Percent + 1] BlocksLeft=$[$BlocksLeft - $ThisTime] BlocksDone=$[$BlocksDone + $ThisTime] echo -n " $Percent% $BlocksDone / $NoOfBlocks " >&2 done echo >&2 ) | cmp - $ImageFileName then echo "Verified - all okay" eject $DeviceFile else echo "Verification problem!" exit 1 fi done echo "Finished"