#!/sbin/sh # @(#) Perform Backup of complete filesystems via ufsdump ################################################## ### Dump Filesystems to Tape ################## ################################################## ##### Preset variables BASDIR=/backup; export BASDIR # base directory PARFIL=parms/tape; export PARFIL # common parameter file INPFIL=parms/inputfs; export INPDEV # input devices to be backed up ACTLOG=log/dumplog; export ACTLOG # recent logfile from backup ERRLOG=log/error.log; export ERRLOG # error report REPORT=log/report; export REPORT # backup report TAPR=""; export TAPR # backup device with rewind TAPN=""; export TAPN # backup device without rewind PARM=""; export PARM # parameters for ufsdump PBEF=""; export PBEF # script to be run before backup PAFT=""; export PAFT # script to be run after backup INP=""; export INP # input filesystems to backed up ##################################################### ##### Procedure do_header ##### ##### Create title for reports ##### ##################################################### do_header() { ##### Save previous logfiles cd $BASDIR mkdir tmp 2>/dev/null if [ -f $ACTLOG.5 ] then cp $ACTLOG.5 $ACTLOG.6 fi if [ -f $ACTLOG.4 ] then cp $ACTLOG.4 $ACTLOG.5 fi if [ -f $ACTLOG.3 ] then cp $ACTLOG.3 $ACTLOG.4 fi if [ -f $ACTLOG.2 ] then cp $ACTLOG.2 $ACTLOG.3 fi if [ -f $ACTLOG.1 ] then cp $ACTLOG.1 $ACTLOG.2 fi if [ -f $ACTLOG ] then cp $ACTLOG $ACTLOG.1 fi rm $ACTLOG ##### Create header ( echo "#############################################################################" HS=`hostname` DS=`date "+%a %d.%m.%Y %H:%M:%S"` LINE="#### Backup : $HS $DS " LINE=`echo "$LINE" |cut -c1-70` LINE="$LINE ######" echo "$LINE" echo "#############################################################################" ) > tmp/header cat tmp/header >> $ACTLOG cat tmp/header >> $REPORT rm tmp/header } ## do_header ##################################################### ##### Procedure do_errlog ##### ##### Create error-report ##################################################### do_errlog() { DS=`date "+%a %d.%m.%Y %H:%M:%S"` echo ">>>ERROR: $DS $*" >>$BASDIR/$ERRLOG echo ">>>ERROR: $DS $*" >>$BASDIR/$ACTLOG echo ">>>ERROR: $DS $*" >>$BASDIR/$REPORT } ## do_errlog ##################################################### ##### Procedure do_logstart ##### ##### Log start of an transaction ##### ##################################################### do_logstart() { DS=`date "+%a %d.%m.%Y %H:%M:%S"` echo "$DS \c" >>$BASDIR/$REPORT } ## do_logstart ##################################################### ##### Procedure do_logend ##### ##### Log end of an transaction ##### ##################################################### do_logend() { DS=`date "+%H:%M:%S"` echo "- $DS $*" >>$BASDIR/$REPORT } ## do_logend ##################################################### ##################################################### ##### MAIN PROCEDURE ############################# ##################################################### ##################################################### ##### Produce header entry into logfiles do_header ##### Check required files cd $BASDIR if [ ! -f $BASDIR/$PARFIL ] then do_errlog $BASDIR/$PARFIL missing ... exiting exit 1 fi if [ ! -f $BASDIR/$INPFIL ] then do_errlog $BASDIR/$INPFIL missing ... exiting exit 2 fi ##### read parameters from parameterfiles cd $BASDIR TAPR=`grep "^TAPR" $PARFIL| cut -f2` TAPN=`grep "^TAPN" $PARFIL| cut -f2` PARM=`grep "^PARM" $PARFIL| cut -f2` PBEF=`grep "^PBEF" $PARFIL| cut -f2` PAFT=`grep "^PAFT" $PARFIL| cut -f2` INP=`cat $INPFIL` export TAPR TAPN PARM PBEF PAFT INP ##### check parameters if [ "$TAPR" = "" -o ! -w "$TAPR" ] then do_errlog Tapedrive $TAPR not existing ... exiting exit 3 fi if [ "$TAPN" = "" -o ! -w "$TAPN" ] then do_errlog Tapedrive $TAPN not existing ... exiting exit 4 fi if [ "$PARM" = "" ] then do_errlog Backupparameters for ufsdump not specified ... exiting exit 5 fi if [ "$INP" = "" ] then do_errlog No inputfilesystems specified ... exiting exit 6 fi ##### process pre-backup activities if [ "$PBEF" != "" -a -x "$PBEF" ] then do_logstart $PBEF do_logend executed pre-backup script fi ######################################################## ##### Dump the specified filesystems to tape ######## mt -f $TAPR rewind cd / for FILESYSTEM in $INP do do_logstart ufsdump $PARM $TAPN $FILESYSTEM >>$BASDIR/$ACTLOG 2>&1 RC=$? do_logend $FILESYSTEM dumped RC=$RC if [ $RC != 0 ] then do_errlog Error $RC during ufsdump of $FILESYSTEM to $TAPN fi done ##### rewind tape after backup is done do_logstart mt -f $TAPR rewind do_logend tape rewind after backup ##### process post-backup activities if [ "$PAFT" != "" -a -x "$PAFT" ] then do_logstart $PAFT do_logend executed post-backup script fi echo >>$BASDIR/$REPORT