#!/bin/sh
# full and incremental backup script
# created 07 February 2000
# Based on a script by Daniel O'Callaghan <danny@freebsd.org>
# and modified by Gerhard Mourani <gmourani@videotron.ca>
# modified for tape use by Chad Amberg <http://www.bluestream.org>
#Change the 3 variables below to fit your computer/backup
DIRECTORIES="/etc /home/accpac " # directories to backup
BACKUPTO=/dev/tape # where to store the backups
TAR=/bin/tar # name and locaction of tar
LOGLOCATION=/var/log/backup
#You should not have to change anything below here
PATH=/usr/local/bin:/usr/bin:/bin
START=`date +%s`
LOGDATE=`date "+%Y.%m.%d"`
# Daily full backup
NEWER=""
echo "Starting Backup" >> $LOGLOCATION/$LOGDATE.backup.log
echo `date` "***** starting backup *****" >> $LOGLOCATION/$LOGDATE.backup.log
if mt -f /$BACKUPTO status | grep "ONLINE"; then
echo "***** finding sockets"
find $DIRECTORIES -type s > sockets
# echo "***** setting compression on"
# mt -f /$BACKUPTO compression 1
echo `date` "***** setting type to DLT 35 Compressed *****"
mt -f /$BACKUPTO setdensity 0x85
echo `date` "***** archiving *****" >> $LOGLOCATION/$LOGDATE.backup.log
$TAR $NEWER -cf $BACKUPTO $DIRECTORIES --exclude-from=sockets --absolute-names --totals
#Print out inventory of tape to a log file for easy greping
echo `date` "**** automatic inventory of tape *****" >> $LOGLOCATION/$LOGDATE.backup.log
tar -tvf /dev/tape --totals >> $LOGLOCATION/$LOGDATE.backup.log
echo `date` "***** tape-drive status *****" >> $LOGLOCATION/$LOGDATE.backup.log
mt -f /$BACKUPTO status >> $LOGLOCATION/$LOGDATE.backup.log
echo `date` "***** ejecting tape *****" >> $LOGLOCATION/$LOGDATE.backup.log
mt -f /$BACKUPTO offline >> $LOGLOCATION/$LOGDATE.backup.log
echo `date` "***** end time-----" >> $LOGLOCATION/$LOGDATE.backup.log
else
echo `date` "***** WARNING TAPE DRIVE IS OFFLINE, NO BACKUPS PERFORMED-----" >> $LOGLOCATION/$LOGDATE.backup.log
fi
FINISH=`date +%s`
diff=$((FINISH - START))
echo "***** Total Run Time: " >> $LOGLOCATION/$LOGDATE.backup.log
HRS=`expr $diff / 3600`
MIN=`expr $diff % 3600 / 60`
SEC=`expr $diff % 3600 % 60`
if [ $HRS -gt 0 ]
then
echo -n "$HRS hrs. " >> $LOGLOCATION/$LOGDATE.backup.log
fi
if [ $MIN -gt 0 ]
then
echo -n "$MIN mins. " >> $LOGLOCATION/$LOGDATE.backup.log
fi
if [ $SEC -gt 0 ]
then
if [ $MIN -gt 0 ]
then
echo "and $SEC secs." >> $LOGLOCATION/$LOGDATE.backup.log
elif [ $HRS -gt 0 ]
then
echo "and $SEC secs." >> $LOGLOCATION/$LOGDATE.backup.log
else
echo "$SEC secs." >> $LOGLOCATION/$LOGDATE.backup.log
fi
fi