This is the backup script that I use for my daily backups. Download the source here.
#!/bin/bash
# set directory to root
cd /
# Set variables
HOST=`/bin/hostname -s`
DATE=`/bin/date +'%m-%d-%Y'`
BKDEV='/dev/sda11'
MCMD='mount -t smbfs -o username=user,password=password //pc/dir /mnt/backup'
BKDIR='/mnt/backup'
LOGDIR='/var/log'
LOG='backup.log'
TMPDIR='/tmp'
TMPLIST='filelist.daily'
TMPLIST1='filelist1.daily'
FILELIST1='/tmp/filelist1.daily'
FILELIST='/tmp/filelist.daily'
# Check for log file, if non exsistant, create one
FILETEST=0
while [ $FILETEST = 0 ];
do
FILETEST=`ls $LOGDIR | grep $LOG | grep -v grep | wc -l`
if [ $FILETEST = 0 ]; then
touch $LOGDIR/$LOG
fi
done
# Check for temporary file list 1, if non exsistant, create one
FILETEST2=0
while [ $FILETEST2 = 0 ];
do
FILETEST2=`ls $TMPDIR | grep $TMPLIST1 | grep -v grep | wc -l`
if [ $FILETEST2 = 0 ]; then
touch $FILELIST1
fi
done
# Check for temporary file list, if non exsistant, create one
FILETEST3=0
while [ $FILETEST2 = 0 ];
do
FILETEST3=`ls $TMPDIR | grep $TMPLIST | grep -v grep | wc -l`
if [ $FILETEST3 = 0 ]; then
touch $FILELIST
fi
done
# Find all file that have changes in the last 24 hours
find /bin -mtime -1 \! -type d -print > $FILELIST1
find /boot -mtime -1 \! -type d -print >> $FILELIST1
find /etc -mtime -1 \! -type d -print >> $FILELIST1
find /home -mtime -1 \! -type d -print >> $FILELIST1
find /lib -mtime -1 \! -type d -print >> $FILELIST1
find /lib64 -mtime -1 \! -type d -print >> $FILELIST1
find /root -mtime -1 \! -type d -print >> $FILELIST1
find /sbin -mtime -1 \! -type d -print >> $FILELIST1
find /usr -mtime -1 \! -type d -print >> $FILELIST1
find /var -mtime -1 \! -type d -print >> $FILELIST1
sed '/lastlog$/d' $FILELIST1 > $FILELIST
# Log start time to /var/log/backup.log.
echo "start daily backup "${DATE} >> $LOGDIR/$LOG
# See if share is mounted, if not, mount it
MTEST=0
while [ $MTEST = 0 ];
do
MTEST=`df -h | grep backup | grep -v grep | wc -l`
if [ $MTEST = 0 ] ; then
$MCMD
fi
done
# Log mounted share confirmation to /var/log/backup.log.
echo "share mounted" >> $LOGDIR/$LOG
tar -cv -T $FILELIST -f $BKDIR/${HOST}_daily_${DATE}.tar
gzip $BKDIR/${HOST}_daily_${DATE}.tar
# Unmount share
while [ $MTEST = 1 ];
do
MTEST=`df -h | grep $BKDIR | grep -v grep | wc -l`
if [ $MTEST = 1 ] ; then
umount $BKDIR
fi
done
# Log mounted share confirmation to /var/log/backup.log.
echo "share umounted" >> $LOGDIR/$LOG
# Log stop time to /var/log/backup.log.
echo "stop daily backup "${DATE} >> $LOGDIR/$LOG
# set directory to root
cd /
# Set variables
HOST=`/bin/hostname -s`
DATE=`/bin/date +'%m-%d-%Y'`
BKDEV='/dev/sda11'
MCMD='mount -t smbfs -o username=user,password=password //pc/dir /mnt/backup'
BKDIR='/mnt/backup'
LOGDIR='/var/log'
LOG='backup.log'
TMPDIR='/tmp'
TMPLIST='filelist.daily'
TMPLIST1='filelist1.daily'
FILELIST1='/tmp/filelist1.daily'
FILELIST='/tmp/filelist.daily'
# Check for log file, if non exsistant, create one
FILETEST=0
while [ $FILETEST = 0 ];
do
FILETEST=`ls $LOGDIR | grep $LOG | grep -v grep | wc -l`
if [ $FILETEST = 0 ]; then
touch $LOGDIR/$LOG
fi
done
# Check for temporary file list 1, if non exsistant, create one
FILETEST2=0
while [ $FILETEST2 = 0 ];
do
FILETEST2=`ls $TMPDIR | grep $TMPLIST1 | grep -v grep | wc -l`
if [ $FILETEST2 = 0 ]; then
touch $FILELIST1
fi
done
# Check for temporary file list, if non exsistant, create one
FILETEST3=0
while [ $FILETEST2 = 0 ];
do
FILETEST3=`ls $TMPDIR | grep $TMPLIST | grep -v grep | wc -l`
if [ $FILETEST3 = 0 ]; then
touch $FILELIST
fi
done
# Find all file that have changes in the last 24 hours
find /bin -mtime -1 \! -type d -print > $FILELIST1
find /boot -mtime -1 \! -type d -print >> $FILELIST1
find /etc -mtime -1 \! -type d -print >> $FILELIST1
find /home -mtime -1 \! -type d -print >> $FILELIST1
find /lib -mtime -1 \! -type d -print >> $FILELIST1
find /lib64 -mtime -1 \! -type d -print >> $FILELIST1
find /root -mtime -1 \! -type d -print >> $FILELIST1
find /sbin -mtime -1 \! -type d -print >> $FILELIST1
find /usr -mtime -1 \! -type d -print >> $FILELIST1
find /var -mtime -1 \! -type d -print >> $FILELIST1
sed '/lastlog$/d' $FILELIST1 > $FILELIST
# Log start time to /var/log/backup.log.
echo "start daily backup "${DATE} >> $LOGDIR/$LOG
# See if share is mounted, if not, mount it
MTEST=0
while [ $MTEST = 0 ];
do
MTEST=`df -h | grep backup | grep -v grep | wc -l`
if [ $MTEST = 0 ] ; then
$MCMD
fi
done
# Log mounted share confirmation to /var/log/backup.log.
echo "share mounted" >> $LOGDIR/$LOG
tar -cv -T $FILELIST -f $BKDIR/${HOST}_daily_${DATE}.tar
gzip $BKDIR/${HOST}_daily_${DATE}.tar
# Unmount share
while [ $MTEST = 1 ];
do
MTEST=`df -h | grep $BKDIR | grep -v grep | wc -l`
if [ $MTEST = 1 ] ; then
umount $BKDIR
fi
done
# Log mounted share confirmation to /var/log/backup.log.
echo "share umounted" >> $LOGDIR/$LOG
# Log stop time to /var/log/backup.log.
echo "stop daily backup "${DATE} >> $LOGDIR/$LOG