X-Git-Url: https://git.wh0rd.org/?p=dump.git;a=blobdiff_plain;f=examples%2Fcron_dump_to_disk%2Fbackup;h=43818c3a670a19b9c4521b2a3db3bcaee9d291f8;hp=da6bda60965483a0750dcfc0cf39e2f515c40783;hb=ad80e1e1320f296669a7727b9ad9b477fadc3fc8;hpb=1733496b97c4003ff6d9cf9cc10f9d4fd0bf6753 diff --git a/examples/cron_dump_to_disk/backup b/examples/cron_dump_to_disk/backup index da6bda6..43818c3 100755 --- a/examples/cron_dump_to_disk/backup +++ b/examples/cron_dump_to_disk/backup @@ -1,10 +1,20 @@ #!/bin/bash # # This script will make a simple backup of the most critical partitions, -# using the "dump" facility, into the backup partition. It will stop the -# webserver, and recurse the sites directories making a tar mini-backup of -# the database dirs. It will the restart the webserver, and start the -# "dump" backup. +# using the "dump" facility, into the backup partition. +# +# Run the following to make a complete backup: +# +# $ su -c "backup full" +# +# Run the following to make an incremental backup: +# +# $ su -c "backup inc" +# +# Add "nodumpdate" to run a backup but not effect the backup state +# recorded in the file /var/lib/dumpdates and reported by dump -W: +# +# $ su -c "backup full nodumpdate" # if [ "$2" = "nodumpdate" ]; then @@ -16,9 +26,11 @@ fi if [ "$1" = "full" ]; then DLEVEL="0" BTYPE="full" + BACKUP="Full" elif [ "$1" = "inc" ]; then DLEVEL="1" BTYPE="inc" + BACKUP="Incremental" else echo "Usage: $0 full|inc [nodumpdate]" exit 1 @@ -29,10 +41,10 @@ fi # Configuration Parameters # -BACKUPPART="/backup" -BACKUPDIR="current" +BACKUPPART=${BACKUPPART:-"/backup"} +BACKUPDIR=${BACKUPDIR:-"current"} DUMPLOGARCH="$BACKUPPART/backup.dump.log.gz" -FSTODUMP="/ /var /home /mnt/hdb1 /usr" +FSTODUMP=${FSTODUMP:-/ /var /home /mnt/hdb1 /usr} DUMPFILESMODE="0644" DUMPFILESOWN="root.root" @@ -42,138 +54,156 @@ DUMPFILESOWN="root.root" echo echo "#####################################################################" -echo "Starting backup." +echo "Starting ${BACKUP} backup." echo "#####################################################################" echo # -# Make full system backup +# Make system backup # -echo "Phase 1: ### Full System Dump Backup ###" -echo "Phase 1: Using backup partition: $BACKUPPART" -echo "Phase 1: Filesystems to dump: $FSTODUMP" +echo "### ${BACKUP} System Dump Backup ###" +echo "Using backup partition: $BACKUPPART" +echo "Filesystems to dump: $FSTODUMP" -echo -n "Phase 1: Remounting backup partition read-write ... " +echo -n "Remounting backup partition read-write ... " if ( mount $BACKUPPART -o remount,rw &> /dev/null ) then echo "done." +elif ( mount $BACKUPPART -o rw &> /dev/null ) then + echo "done." else echo "failure!" - echo "Phase 1: There were problems remounting $BACKUPPART in read-write mode!" - echo "Phase 1: Aborting Full System Dump Backup." - echo "Phase 1: Aborted, done." + echo " There were problems remounting $BACKUPPART in read-write mode!" + echo "Aborting ${BACKUP} System Dump Backup." + echo "Aborted." echo "-------------------------------------------------------------------------------" exit 1 fi -echo -n "Phase 1: Checking backup partition for correct dir structure ... " +echo -n "Checking backup partition for correct dir structure ... " if [ -d $BACKUPPART/$BACKUPDIR -a -w $BACKUPPART/$BACKUPDIR ]; then echo "done." - echo -n "Phase 1: Checking backup partition for available space ... " - SREQ=`for i in $FSTODUMP;do dump -$DLEVEL -S $i 2> /dev/null;done|awk '{x=x+$1/1048576} END {printf "%6.0f\n", x}'` - SAVAILFREE=`df --block-size=1048576 |grep -Ew $BACKUPPART|awk '{printf "%6.0f\n", $4}'` - SAVAILDEL=`du -s --block-size=1048576 $BACKUPPART/$BACKUPDIR/. |awk '{printf "%6.0f\n", $1}'` + echo -n "Checking backup partition for available space ... " + SREQ=`for i in $FSTODUMP; do dump -$DLEVEL -S $i 2> /dev/null; done | awk '{x=x+$1/1048576} END {printf "%6.0f\n", x}'` + SAVAILFREE=`df --block-size=1048576 | grep -Fe $BACKUPPART | awk '{printf "%6.0f\n", $4}'` + SAVAILDEL=`du -s --block-size=1048576 $BACKUPPART/$BACKUPDIR/. | awk '{printf "%6.0f\n", $1}'` SAVAIL=`expr $SAVAILFREE + $SAVAILDEL` if [ `expr $SAVAIL - $SREQ` -gt "0" ]; then echo "done." - echo "Phase 1: Available: $SAVAIL MB Required: $SREQ MB." + echo "Available: $SAVAIL MB Required: $SREQ MB." else - echo "no enough space!" - echo "Phase 1: There is not enough space left in $BACKUPPART for the backup!" - echo "Phase 1: Available: $SAVAIL MB Required: $SREQ MB." - echo -n "Phase 1: Remounting backup partition read-only ... " + echo "not enough space!" + echo "There is not enough space left in $BACKUPPART for the backup!" + echo "Available: $SAVAIL MB Required: $SREQ MB." + echo -n "Remounting backup partition read-only ... " if ( mount $BACKUPPART -o remount,ro &> /dev/null ) then echo "done." + elif ( mount $BACKUPPART -o ro &> /dev/null ) then + echo "done." else echo "failure!" - echo "Phase 1: There were problems remounting $BACKUPPART in read-only mode!" - echo "Phase 1: Aborting Full System Dump Backup." - echo "Phase 1: Aborted, done." + echo "There were problems remounting $BACKUPPART in read-only mode!" + echo "Aborting ${BACKUP} System Dump Backup." + echo "Aborted." echo "-------------------------------------------------------------------------------" exit 1 fi - echo "Phase 1: Aborting Full System Dump Backup." - echo "Phase 1: Aborted, done." + echo "Aborting ${BACKUP} System Dump Backup." + echo "Aborted." echo "-------------------------------------------------------------------------------" exit 1 fi - echo -n "Phase 1: Deleting old files ... " - if [ `ls -la $BACKUPPART/$BACKUPDIR/|wc -l` -gt "3" ]; then + echo -n "Deleting old files ... " + if [ `ls -la $BACKUPPART/$BACKUPDIR/ | wc -l` -gt "3" ]; then rm -f $BACKUPPART/$BACKUPDIR/* &> /dev/null echo "done." else echo "no old files to delete." fi - echo "Phase 1: Dumping filesystems ... " + echo "Dumping filesystems ... " for FS in $FSTODUMP do if [ "$FS" = "/" ]; then FSNAME="root" else - FSNAME=`echo $FS|tr / _|cut -b 2-` + FSNAME=`echo $FS | tr / _ | cut -b 2-` fi sync - echo -n "Phase 1: Starting dump of $FSNAME ( $FS ) ... " - if ( dump -$DLEVEL $UPDATEDDATE -z -M -s 27306 -f $BACKUPPART/$BACKUPDIR/$FSNAME.$BTYPE. $FS &> $BACKUPPART/$BACKUPDIR/$FSNAME.log ) then + TODAY="`date +%a%Y%m%d`" + echo -n "Starting dump of $FSNAME ( $FS ) ... " + if ( dump -$DLEVEL $UPDATEDDATE -z -M -s 27306 -f $BACKUPPART/$BACKUPDIR/$FSNAME.$BTYPE. -Q $BACKUPPART/$BACKUPDIR/$FSNAME.$BTYPE.qfa -L ${TODAY}file $FS &> $BACKUPPART/$BACKUPDIR/$FSNAME.log ) then echo "done." else echo "problems!" - echo "Phase 1: There where problems with the dump of $FSNAME ( $FS )." - echo "Phase 1: Check logfile $BACKUPPART/$BACKUPDIR/$FSNAME.log for more info" - echo "Phase 1: Also check log archive file $DUMPLOGARCH." + echo "There were problems with the dump of $FSNAME ( $FS )." + echo "Check log file at $BACKUPPART/$BACKUPDIR/$FSNAME.log.gz" + echo "Also check log archive file $DUMPLOGARCH." + fi + + echo -n "Verifying dump of $FSNAME ( $FS ) ... " + echo "-------------------------------------------------------------------------------" >> $BACKUPPART/$BACKUPDIR/$FSNAME.log + echo "Result of dump for $FSNAME ( $FS ):" >> $BACKUPPART/$BACKUPDIR/$FSNAME.log + if ( restore -C -M -f $BACKUPPART/$BACKUPDIR/$FSNAME.$BTYPE. >> $BACKUPPART/$BACKUPDIR/$FSNAME.log 2>&1 ) then + echo "done." + else + echo "problems!" + echo "There were problems verifying the dump of $FSNAME ( $FS )." + echo "Check log file $BACKUPPART/$BACKUPDIR/$FSNAME.log.gz for more info" fi cat $BACKUPPART/$BACKUPDIR/$FSNAME.log |gzip >> $DUMPLOGARCH echo "-------------------------------------------------------------------------------" |gzip >> $DUMPLOGARCH done - echo -n "Phase 1: Setting ownership and permissions of dump files ... " + echo -n "Setting ownership and permissions of dump files ... " chmod $DUMPFILESMODE $BACKUPPART/$BACKUPDIR/* $DUMPLOGARCH &> /dev/null chown $DUMPFILESOWN $BACKUPPART/$BACKUPDIR/* $DUMPLOGARCH &> /dev/null echo "done." - echo -n "Phase 1: Compressing dump log files ... " + echo -n "Compressing dump log files ... " gzip $BACKUPPART/$BACKUPDIR/*.log &> /dev/null echo "done." sync else echo "problems!" - echo "Phase 1: There are problems with the directory structure." - echo "Phase 1: Check dirs: $BACKUPPART/$BACKUPDIR" - echo -n "Phase 1: Remounting backup partition read-only ... " + echo "There are problems with the directory structure." + echo "Check directory: $BACKUPPART/$BACKUPDIR" + echo -n "Remounting backup partition read-only ... " if ( mount $BACKUPPART -o remount,ro &> /dev/null ) then echo "done." else echo "failure!" - echo "Phase 1: There were problems remounting $BACKUPPART in read-only mode!" - echo "Phase 1: Aborting Full System Dump Backup." - echo "Phase 1: Aborted, done." + echo "There were problems remounting $BACKUPPART in read-only mode!" + echo "Aborting ${BACKUP} System Dump Backup." + echo "Aborted." echo "-------------------------------------------------------------------------------" exit 1 fi - echo "Phase 1: Aborting Full System Dump Backup." - echo "Phase 1: Aborted, done." + echo "Aborting ${BACKUP} System Dump Backup." + echo "Aborted." echo "-------------------------------------------------------------------------------" exit 1 fi -echo -n "Phase 1: Remounting backup partition read-only ... " +echo -n "Remounting backup partition read-only ... " if ( mount $BACKUPPART -o remount,ro &> /dev/null ) then echo "done." else echo "failure!" - echo "Phase 1: There were problems remounting $BACKUPPART in read-only mode!" - echo "Phase 1: Aborting Full System Dump Backup." - echo "Phase 1: Aborted, done." + echo "There were problems remounting $BACKUPPART in read-only mode!" + echo "Aborting ${BACKUP} System Dump Backup." + echo "Aborted." echo "-------------------------------------------------------------------------------" exit 1 fi -echo "Phase 1: End of Full System Dump Backup." -echo "Phase 1: Done." +echo "### End of ${BACKUP} System Dump Backup ###" +echo "Done." echo "-------------------------------------------------------------------------------" + +## end of script