#!/bin/sh
# snapback - create snapshotesque backups
# created - Aug 04 2004
#
# list servers to be backed up
SERVERS="server1 server2"
HOST=`hostname | tr a-z A-z`
echo Starting Data Refresh...
for SERVER in `echo $SERVERS`
do
echo
USERVER=`echo $SERVER | tr a-z A-Z`
echo Update $USERVER
[ ! -d /u/archive/$SERVER ] && mkdir /u/archive/$SERVER
cd /u/archive/$SERVER
echo " - Shift Directories"
echo -n ' 6'
[ -d 6 ] && rm -r 6
[ -d 5 ] && mv 5 6
echo -n ' 5'
[ -d 4 ] && mv 4 5
echo -n ' 4'
[ -d 3 ] && mv 3 4
echo -n ' 3'
[ -d 2 ] && mv 2 3
echo -n ' 2'
[ -d 1 ] && mv 1 2
echo -n ' 1'
[ -d 0 ] && mv 0 1
echo -n ' 0'
[ -d 1 ] && cp -al 1 0
[ ! -d 0 ] && mkdir 0
echo
# list directories to back up
[ "$SERVER" = "server1" ] && DIRECTORIES="/root /etc /var/www /home"
[ "$SERVER" = "server2" ] && DIRECTORIES="/home"
# sync direcories
for DIRECTORY in `echo $DIRECTORIES`
do
echo " - rsync $SERVER:$DIRECTORY to 0"
rsync -avRz -e ssh --delete $SERVER:$DIRECTORY 0 >/dev/null 2>&1
if [ ! "$?" = "0" ]
then
echo " Rsync Failed!!!"
MESG="$HOST: Rsync of $SERVER:$DIRECTORY Failed"
echo "Please Investigate and Fix Errors." | mail -s "$MESG" user@domain.com
echo "`date`: $MESG" >>/var/log/snapback.log
else
echo "`date`: Rsync Archive of $SERVER:$DIRECTORY Completed Successfully" >>/var/log/snapback.log
fi
done
done
echo
# Start a Tape Backup
echo "`date`: Start Tape Backup" >> /var/log/snapback.log
tar cf /dev/nst0 /u/archive/[a-z]*/0 -b125
if [ $? -eq 0 ]; then
echo "`date`: Finished Tape Backup" >> /var/log/snapback.log
else
echo "`date`: ERROR - Error Returned While Writing to Tape. Backup May Be Incomplete." >> /var/log/snapback.log
exit 1
fi