#!/bin/bash # Author: Joshua V. Dillon # Date: Aug. 4, 2007 # Email: jvdillon AATT purdue DDOOTT edu # About: growisofs wrapper # sudo aptitude install coreutils dvd+rw-tools # --- parse inputs ------------------------------- # volume ID is no more than 32 alpha, digit, or '_' VOLID=`echo -n $1 | tr -dc '_[:space:][:alnum:]' | \ tr 'a-z' 'A-Z' | tr -s [:space:] '_'` VOLID=${VOLID:0:32} # will later use relative directory access, hence length SRCDIR=$2 SPLIT=`expr length "$SRCDIR"` # --- burn DVD ----------------------------------- growisofs -use-the-force-luke=dao \ -input-charset=iso8859-1 -dvd-compat \ -J -R -pad -Z /dev/scd0 -speed=4 -overburn \ -V "$VOLID" "$SRCDIR" # -allow-leading-dots -allow-lowercase \ # -allow-multidot -d \ # -iso-level 4 \ EXITCODE=$? if [ $EXITCODE -ne 0 ]; then echo "unable to burn DVD" rm -f $TMPFILE exit 2 fi sudo eject cdrom sudo eject -t cdrom sleep 20 # --- compute MD5 checksums ---------------------- TMPFILE=`mktemp` || exit 1 OLDIFS=$IFS; IFS=$'\t' find "$SRCDIR" -type f -printf "%p\t%s\n" | \ sort | while read FILE SIZE; do MD5=`md5sum -b "$FILE" | awk '{print $1}'` # someday may want to add Jigdo support, i.e., # printf "% 32s %012d /%s\n" \ # $MD5 $SIZE ${FILE:$SPLIT} >> $JIGDOFILE echo "$MD5 *${FILE:$SPLIT}" >> $TMPFILE done IFS=$OLDIFS # --- verification ------------------------------- cd /media/cdrom0 md5sum -c $TMPFILE 1> ~/burn.log 2>/dev/null EXITCODE=$? cat $TMPFILE >> ~/burn.log rm -f $TMPFILE if [ $EXITCODE -eq 0 ]; then echo "verification successful" else echo "verification failed!" fi if [ "x`which -a beep`" != "x" ]; then sudo beep 783.99 500 sudo beep 880.00 500 sudo beep 698.46 500 sudo beep 349.23 500 sudo beep 523.25 700 fi # code graveyard #SRCDIR=`echo $2 | sed -e 's/\/$//g' | \ # sed -e 's/\//\\\\\//g'` #echo "$SRCDIR\n" #FILE=`echo $FILE|sed "s/${SRCDIR}\///g"`