3 # One must supply the disk name as an argument to this script
6 scriptsdir=$(dirname $0)
8 export PATH=$scriptsdir:/bin:/usr/bin:/sbin:/usr/sbin
10 # source the default configuration
13 # source the system specific configuration
14 [ -f /etc/lsbackups.conf ] && . /etc/lsbackups.conf
16 isoimage="$imagedir/$1.iso"
17 isomountdir="$isoimage.mnt"
19 echo "-> Checking for available disk space on $imagedir"
20 available=$(df $imagedir | awk '{print$4}' | grep -E "[0-9]+")
21 required=$((imagesizemb*1024))
22 [ $required -gt $available ] && err "Not enough space for the backup image on $imagedir"
24 echo "-> Creating directories"
25 mkdir --mode=700 -p $datadir $imagedir $isomountdir $tmpdir
27 test -d $isomountdir && rm -rf $isomountdir
28 err "Unable to create the following directories:
29 $datadir $imagedir $isomountdir $tmpdir"
32 echo "-> Creating the iso image in $isoimage"
33 dd of=$isoimage bs=1M count=0 seek=$imagesizemb
35 [ $? != 0 ] && err "dd failed to create $isoimage"
37 mke2fs -b $blocksize -F $isoimage
39 rm -rf $isomountdir $isoimage
40 err "Unable to create the iso image: $isoimage"
43 e2label $isoimage $today
45 rm -rf $isomountdir $isoimage
46 err "Unable to label the iso image: $isoimage"
49 echo "-> Mounting the iso image"
50 mount -t ext2 -o loop $isoimage $isomountdir
52 rm -rf $isomountdir $isoimage
53 err "Unable to mount the iso image: $isoimage -> $isomountdir"
56 echo "-> Querying backupdb for files originally placed on disk $1"
57 cat $backupdb | files-from-date.sh $1 > $1.filelist
59 echo "-> Repacking backup image for disk $1"
60 cat $1.filelist | rsync -W -H -S -l -p -t -g -o -0 --files-from=- --stats --progress / $isomountdir
63 md5sum $isoimage | awk '{print$1}' > $isoimage.md5sum