*** empty log message ***

This commit is contained in:
François Pinard
1994-11-16 02:48:35 +00:00
parent 0fbf17b30d
commit 9c8ae7901b
2 changed files with 200 additions and 48 deletions

View File

@@ -10,26 +10,22 @@
# You must edit the file `backup-specs' to set the parameters for your site. # You must edit the file `backup-specs' to set the parameters for your site.
if [ ! -w / ]; then if [ ! -w / ]; then
echo The backup must be run as root, echo The backup must be run as root or else some files will fail to be dumped.
echo or else some files will fail to be dumped.
exit 1 exit 1
else else
false false
fi fi
# This is undesirable -- rms.
# rsh albert /usr/local/adm/motd-backup-start
# Get the values of BACKUP_DIRS and BACKUP_FILES, and other variables. # Get the values of BACKUP_DIRS and BACKUP_FILES, and other variables.
. ./backup-specs . ./backup-specs
# Maybe sleep until around specified or default hour. # Maybe sleep until around specified or default hour.
# #
if [ "$1" != "now" ]; then if [ "${1}" != "now" ]; then
if [ "$1"x != x ]; then if [ "${1}x" != "x" ]; then
spec=$1 spec="${1}"
else else
spec=$BACKUP_HOUR spec="${BACKUP_HOUR}"
fi fi
pausetime=`date | awk '{hr=substr($4,1,2);\\ pausetime=`date | awk '{hr=substr($4,1,2);\\
mn=substr($4,4,2);\\ mn=substr($4,4,2);\\
@@ -39,7 +35,7 @@ if [ "$1" != "now" ]; then
print 3600*(spec+(24-hr))-60*mn; }' spec=$spec` print 3600*(spec+(24-hr))-60*mn; }' spec=$spec`
clear clear
cat ./dont_touch cat ./dont_touch
sleep $pausetime sleep ${pausetime}
fi fi
# start doing things # start doing things
@@ -47,98 +43,109 @@ fi
here=`pwd` here=`pwd`
LOGFILE=log-`date | awk '{print $2 "-" $3 "-" $6}'`-full LOGFILE=log-`date | awk '{print $2 "-" $3 "-" $6}'`-full
HOST=`hostname | sed 's/\..*//'` HOST=`hostname | sed 's/\..*//'`
TAR_PART1="/usr/local/bin/tar -c --multi-volume --one-file-system --block=$BLOCKING --sparse --volno-file=$VOLNO_FILE" TAR_PART1="/usr/local/bin/tar -c --multi-volume --one-file-system --block=${BLOCKING} --sparse --volno-file=${VOLNO_FILE}"
# Only use --info-script if DUMP_REMIND_SCRIPT was defined in backup-specs
if [ x != "x${DUMP_REMIND_SCRIPT}" ]; then
TAR_PART1="${TAR_PART1} --info-script=${DUMP_REMIND_SCRIPT}"
fi
# Make sure the log file did not already exist. Create it. # Make sure the log file did not already exist. Create it.
if [ -f $LOGFILE ] ; then if [ -f ${LOGFILE} ] ; then
echo Log file $LOGFILE already exists. echo Log file ${LOGFILE} already exists.
exit 1 exit 1
else else
touch $LOGFILE touch ${LOGFILE}
fi fi
mt -f $TAPE_FILE rewind mt -f ${TAPE_FILE} rewind
rm $VOLNO_FILE rm ${VOLNO_FILE}
set $BACKUP_DIRS set ${BACKUP_DIRS}
while [ $# -ne 0 ] ; do while [ $# -ne 0 ] ; do
host=`echo $1 | sed 's/:.*$//'` host=`echo ${1} | sed 's/:.*$//'`
fs=`echo $1 | sed 's/^.*://'` fs=`echo ${1} | sed 's/^.*://'`
date=`date` date=`date`
fsname=`echo $1 | sed 's/\//:/g'` fsname=`echo $1 | sed 's/\//:/g'`
TAR_PART2="--listed=/etc/tar-backup/temp.level-0" TAR_PART2="--listed=/etc/tar-backup/temp.level-0"
TAR_PART3="--label='Full backup of $fs on $host at $date' -C $fs ." TAR_PART3="--label='Full backup of ${fs} on ${host} at ${date}' -C ${fs} ."
echo Backing up $1 at $date | tee -a $LOGFILE echo Backing up ${1} at ${date} | tee -a ${LOGFILE}
# Actually back things up. # Actually back things up.
if [ $HOST != $host ] ; then if [ ${HOST} != ${host} ] ; then
# Removed 2>&1/dev/null cruft since that's incorrect sh syntax. # Removed 2>&1/dev/null cruft since that's incorrect sh syntax.
rsh $host mkdir /etc/tar-backup > /dev/null 2>&1 rsh ${host} mkdir /etc/tar-backup > /dev/null 2>&1
rsh $host rm -f /etc/tar-backup/temp.level-0 rsh ${host} rm -f /etc/tar-backup/temp.level-0
rsh $host $TAR_PART1 -f $HOST:$TAPE_FILE $TAR_PART2 $TAR_PART3 2>&1 | tee -a $LOGFILE rsh ${host} ${TAR_PART1} -f ${HOST}:${TAPE_FILE} ${TAR_PART2} ${TAR_PART3} 2>&1 | tee -a ${LOGFILE}
else else
mkdir /etc/tar-backup > /dev/null 2>&1 mkdir /etc/tar-backup > /dev/null 2>&1
rm -f /etc/tar-backup/temp.level-0 rm -f /etc/tar-backup/temp.level-0
# Using `sh -c exec' causes nested quoting and shell substitution # Using `sh -c exec' causes nested quoting and shell substitution
# to be handled here in the same way rsh handles it. # to be handled here in the same way rsh handles it.
sh -c "exec $TAR_PART1 -f $TAPE_FILE $TAR_PART2 $TAR_PART3" 2>&1 | tee -a $LOGFILE sh -c "exec ${TAR_PART1} -f ${TAPE_FILE} ${TAR_PART2} ${TAR_PART3}" 2>&1 | tee -a ${LOGFILE}
fi fi
# This doesn't presently work, of course, because $? is set to the exit
# status of the last thing in the pipeline of the previous command,
# namely `tee'. We really want the exit status of the sh command
# running tar, but getting this seems to be nontrivial. --friedman
if [ $? -ne 0 ] ; then if [ $? -ne 0 ] ; then
echo Backup of $1 failed. | tee -a $LOGFILE echo Backup of ${1} failed. | tee -a ${LOGFILE}
# I'm assuming that the tar will have written an empty # I'm assuming that the tar will have written an empty
# file to the tape, otherwise I should do a cat here. # file to the tape, otherwise I should do a cat here.
else else
if [ $HOST != $host ] ; then if [ ${HOST} != ${host} ] ; then
rsh $host "mv -f /etc/tar-backup/temp.level-0 /etc/tar-backup/$fsname.level-0" 2>&1 | tee -a $LOGFILE rsh ${host} "mv -f /etc/tar-backup/temp.level-0 /etc/tar-backup/${fsname}.level-0" 2>&1 | tee -a ${LOGFILE}
else else
mv -f /etc/tar-backup/temp.level-0 /etc/tar-backup/$fsname.level-0 2>&1 | tee -a $LOGFILE mv -f /etc/tar-backup/temp.level-0 /etc/tar-backup/${fsname}.level-0 2>&1 | tee -a ${LOGFILE}
fi fi
fi fi
$TAPE_STATUS | tee -a $LOGFILE ${TAPE_STATUS} | tee -a ${LOGFILE}
sleep 60 sleep 60
shift shift
done done
# Dump any individual files requested. # Dump any individual files requested.
if [ x != "x$BACKUP_FILES" ] ; then if [ x != "x${BACKUP_FILES}" ] ; then
date=`date` date=`date`
TAR_PART2="--listed=/etc/tar-backup/temp.level-0" TAR_PART2="--listed=/etc/tar-backup/temp.level-0"
TAR_PART3="--label='Full backup of miscellaneous files at $date'" TAR_PART3="--label='Full backup of miscellaneous files at ${date}'"
mkdir /etc/tar-backup > /dev/null 2>&1 mkdir /etc/tar-backup > /dev/null 2>&1
rm -f /etc/tar-backup/temp.level-0 rm -f /etc/tar-backup/temp.level-0
echo Backing up miscellaneous files at $date | tee -a $LOGFILE echo Backing up miscellaneous files at ${date} | tee -a ${LOGFILE}
# Using `sh -c exec' causes nested quoting and shell substitution # Using `sh -c exec' causes nested quoting and shell substitution
# to be handled here in the same way rsh handles it. # to be handled here in the same way rsh handles it.
sh -c "exec $TAR_PART1 -f $TAPE_FILE $TAR_PART2 $TAR_PART3 \ sh -c "exec ${TAR_PART1} -f ${TAPE_FILE} ${TAR_PART2} ${TAR_PART3} \
$BACKUP_FILES" 2>&1 | tee -a $LOGFILE ${BACKUP_FILES}" 2>&1 | tee -a ${LOGFILE}
# This doesn't presently work, of course, because $? is set to the exit
# status of the last thing in the pipeline of the previous command,
# namely `tee'. We really want the exit status of the sh command
# running tar, but getting this seems to be nontrivial. --friedman
if [ $? -ne 0 ] ; then if [ $? -ne 0 ] ; then
echo Backup of miscellaneous files failed. | tee -a $LOGFILE echo Backup of miscellaneous files failed. | tee -a ${LOGFILE}
# I'm assuming that the tar will have written an empty # I'm assuming that the tar will have written an empty
# file to the tape, otherwise I should do a cat here. # file to the tape, otherwise I should do a cat here.
else else
mv -f /etc/tar-backup/temp.level-0 /etc/tar-backup/misc.level-0 2>&1 | tee -a $LOGFILE mv -f /etc/tar-backup/temp.level-0 /etc/tar-backup/misc.level-0 2>&1 | tee -a ${LOGFILE}
fi fi
$TAPE_STATUS | tee -a $LOGFILE ${TAPE_STATUS} | tee -a ${LOGFILE}
else else
echo No miscellaneous files specified | tee -a $LOGFILE echo No miscellaneous files specified | tee -a ${LOGFILE}
false false
fi fi
mt -f $TAPE_FILE rewind mt -f ${TAPE_FILE} rewind
mt -f $TAPE_FILE offl mt -f ${TAPE_FILE} offl
echo Sending the dump log to $ADMINISTRATOR echo Sending the dump log to ${ADMINISTRATOR}
cat $LOGFILE | sed -f logfile.sed > $LOGFILE.tmp cat ${LOGFILE} | sed -f logfile.sed > ${LOGFILE}.tmp
/usr/ucb/mail -s "Results of backup on `date`" $ADMINISTRATOR < $LOGFILE.tmp /usr/ucb/mail -s "Results of backup on `date`" ${ADMINISTRATOR} < ${LOGFILE}.tmp
rm -f $LOGFILE.tmp rm -f ${LOGFILE}.tmp
# This is undesirable -- rms.
#rsh albert /usr/local/adm/motd-backup-done &

145
scripts/level-1 Normal file
View File

@@ -0,0 +1,145 @@
#!/bin/sh
#
# Run this script as root on the machine that has the tape drive, to make a
# level-1 dump containing all files changed since the last full dump.
#
# If you give `now' as an argument, the dump is done immediately.
# Otherwise, it waits until 1am.
#
# You must edit the file `backup-specs' to set the parameters for your site.
if [ ! -w / ]; then
echo The backup must be run as root,
echo or else some files will fail to be dumped.
exit 1
else
false
fi
# Get the values of BACKUP_DIRS and BACKUP_FILES, and other variables.
. ./backup-specs
# Maybe sleep until around specified or default hour.
#
if [ "$1" != "now" ]; then
if [ "$1"x != x ]; then
spec=$1
else
spec=$BACKUP_HOUR
fi
pausetime=`date | awk '{hr=substr($4,1,2);\\
mn=substr($4,4,2);\\
if((hr+0)<spec+0)\\
print 3600*(spec-hr)-60*mn;\\
else\\
print 3600*(spec+(24-hr))-60*mn; }' spec=$spec`
clear
cat ./dont_touch
sleep $pausetime
fi
# start doing things
here=`pwd`
LOGFILE=log-`date | awk '{print $2 "-" $3 "-" $6}'`-level-1
HOST=`hostname | sed 's/\..*//'`
TAR_PART1="/usr/local/bin/tar -c --multi-volume --one-file-system --block=$BLOCKING --sparse --volno-file=$VOLNO_FILE" --atime-preserve
# Make sure the log file did not already exist. Create it.
if [ -f $LOGFILE ] ; then
echo Log file $LOGFILE already exists.
exit 1
else
touch $LOGFILE
fi
mt -f $TAPE_FILE rewind
rm $VOLNO_FILE
set $BACKUP_DIRS
while [ $# -ne 0 ] ; do
host=`echo $1 | sed 's/:.*$//'`
fs=`echo $1 | sed 's/^.*://'`
date=`date`
fsname=`echo $1 | sed 's/\//:/g'`
# This filename must be absolute; it is opened on the machine that runs tar.
TAR_PART2="--listed=/etc/tar-backup/temp.level-1"
TAR_PART3="--label='level 1 backup of $fs on $host at $date' -C $fs ."
echo Backing up $1 at $date | tee -a $LOGFILE
echo Last full dump on this filesystem: | tee -a $LOGFILE
if [ $HOST != $host ] ; then
rsh $host "ls -l /etc/tar-backup/$fsname.level-0; \
cp /etc/tar-backup/$fsname.level-0 /etc/tar-backup/temp.level-1" \
2>&1 | tee -a $LOGFILE
else
ls -l /etc/tar-backup/$fsname.level-0 2>&1 | tee -a $LOGFILE
cp /etc/tar-backup/$fsname.level-0 /etc/tar-backup/temp.level-1 2>&1 | tee -a $LOGFILE
fi
# Actually back things up.
if [ $HOST != $host ] ; then
rsh $host $TAR_PART1 -f $HOST:$TAPE_FILE $TAR_PART2 $TAR_PART3 2>&1 | tee -a $LOGFILE
else
# Using `sh -c exec' causes nested quoting and shell substitution
# to be handled here in the same way rsh handles it.
sh -c "exec $TAR_PART1 -f $TAPE_FILE $TAR_PART2 $TAR_PART3" 2>&1 | tee -a $LOGFILE
fi
if [ $? -ne 0 ] ; then
echo Backup of $1 failed. | tee -a $LOGFILE
# I'm assuming that the tar will have written an empty
# file to the tape, otherwise I should do a cat here.
else
if [ $HOST != $host ] ; then
rsh $host mv -f /etc/tar-backup/temp.level-1 /etc/tar-backup/$fsname.level-1 2>&1 | tee -a $LOGFILE
else
mv -f /etc/tar-backup/temp.level-1 /etc/tar-backup/$fsname.level-1 2>&1 | tee -a $LOGFILE
fi
fi
$TAPE_STATUS | tee -a $LOGFILE
sleep 60
shift
done
# Dump any individual files requested.
if [ x != "x$BACKUP_FILES" ] ; then
date=`date`
TAR_PART2="--listed=/etc/tar-backup/temp.level-1"
TAR_PART3="--label='Incremental backup of miscellaneous files at $date'"
echo Backing up miscellaneous files at $date | tee -a $LOGFILE
echo Last full dump of these files: | tee -a $LOGFILE
ls -l /etc/tar-backup/misc.level-0 2>&1 | tee -a $LOGFILE
rm -f /etc/tar-backup/temp.level-1 2>&1 | tee -a $LOGFILE
cp /etc/tar-backup/misc.level-0 /etc/tar-backup/temp.level-1 2>&1 | tee -a $LOGFILE
echo Backing up miscellaneous files at $date | tee -a $LOGFILE
# Using `sh -c exec' causes nested quoting and shell substitution
# to be handled here in the same way rsh handles it.
sh -c "exec $TAR_PART1 -f $TAPE_FILE $TAR_PART2 $TAR_PART3 \
$BACKUP_FILES" 2>&1 | tee -a $LOGFILE
if [ $? -ne 0 ] ; then
echo Backup of miscellaneous files failed. | tee -a $LOGFILE
# I'm assuming that the tar will have written an empty
# file to the tape, otherwise I should do a cat here.
else
mv -f /etc/tar-backup/temp.level-1 /etc/tar-backup/misc.level-1 2>&1 | tee -a $LOGFILE
fi
$TAPE_STATUS | tee -a $LOGFILE
else
echo No miscellaneous files specified | tee -a $LOGFILE
false
fi
mt -f $TAPE_FILE rewind
mt -f $TAPE_FILE offl
echo Sending the dump log to $ADMINISTRATOR
cat $LOGFILE | sed -f logfile.sed > $LOGFILE.tmp
/usr/ucb/mail -s "Results of backup on `date`" $ADMINISTRATOR < $LOGFILE.tmp