*** 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.
if [ ! -w / ]; then
echo The backup must be run as root,
echo or else some files will fail to be dumped.
echo The backup must be run as root or else some files will fail to be dumped.
exit 1
else
false
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.
. ./backup-specs
# Maybe sleep until around specified or default hour.
#
if [ "$1" != "now" ]; then
if [ "$1"x != x ]; then
spec=$1
if [ "${1}" != "now" ]; then
if [ "${1}x" != "x" ]; then
spec="${1}"
else
spec=$BACKUP_HOUR
spec="${BACKUP_HOUR}"
fi
pausetime=`date | awk '{hr=substr($4,1,2);\\
mn=substr($4,4,2);\\
@@ -39,7 +35,7 @@ if [ "$1" != "now" ]; then
print 3600*(spec+(24-hr))-60*mn; }' spec=$spec`
clear
cat ./dont_touch
sleep $pausetime
sleep ${pausetime}
fi
# start doing things
@@ -47,98 +43,109 @@ fi
here=`pwd`
LOGFILE=log-`date | awk '{print $2 "-" $3 "-" $6}'`-full
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.
if [ -f $LOGFILE ] ; then
echo Log file $LOGFILE already exists.
if [ -f ${LOGFILE} ] ; then
echo Log file ${LOGFILE} already exists.
exit 1
else
touch $LOGFILE
touch ${LOGFILE}
fi
mt -f $TAPE_FILE rewind
rm $VOLNO_FILE
mt -f ${TAPE_FILE} rewind
rm ${VOLNO_FILE}
set $BACKUP_DIRS
set ${BACKUP_DIRS}
while [ $# -ne 0 ] ; do
host=`echo $1 | sed 's/:.*$//'`
fs=`echo $1 | sed 's/^.*://'`
host=`echo ${1} | sed 's/:.*$//'`
fs=`echo ${1} | sed 's/^.*://'`
date=`date`
fsname=`echo $1 | sed 's/\//:/g'`
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.
if [ $HOST != $host ] ; then
if [ ${HOST} != ${host} ] ; then
# Removed 2>&1/dev/null cruft since that's incorrect sh syntax.
rsh $host mkdir /etc/tar-backup > /dev/null 2>&1
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} mkdir /etc/tar-backup > /dev/null 2>&1
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}
else
mkdir /etc/tar-backup > /dev/null 2>&1
rm -f /etc/tar-backup/temp.level-0
# 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
sh -c "exec ${TAR_PART1} -f ${TAPE_FILE} ${TAR_PART2} ${TAR_PART3}" 2>&1 | tee -a ${LOGFILE}
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
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
# 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-0 /etc/tar-backup/$fsname.level-0" 2>&1 | tee -a $LOGFILE
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}
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
$TAPE_STATUS | tee -a $LOGFILE
${TAPE_STATUS} | tee -a ${LOGFILE}
sleep 60
shift
done
# Dump any individual files requested.
if [ x != "x$BACKUP_FILES" ] ; then
if [ x != "x${BACKUP_FILES}" ] ; then
date=`date`
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
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
# 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
sh -c "exec ${TAR_PART1} -f ${TAPE_FILE} ${TAR_PART2} ${TAR_PART3} \
${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
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
# file to the tape, otherwise I should do a cat here.
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
$TAPE_STATUS | tee -a $LOGFILE
${TAPE_STATUS} | tee -a ${LOGFILE}
else
echo No miscellaneous files specified | tee -a $LOGFILE
echo No miscellaneous files specified | tee -a ${LOGFILE}
false
fi
mt -f $TAPE_FILE rewind
mt -f $TAPE_FILE offl
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
rm -f $LOGFILE.tmp
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
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