This has been a great discussion thus far - I've heard about some tools
for the first time here. To contribute back, here is the BASH script I
use for my backup routines. The magic is that it doesn't try to be a
one-stop solution for all scenarios. Instead it expects each scenario
to take care of itself via a separate script, and place it's backup
files into the working directory under a reasonably named
sub-directory. Then it just tar's up the whole working directory...
The depth or number of backups can be easily changed by altering the DAY
variable. Of course, I don't pretend this is the BEST solution in all
cases though, so use your best judgment. Oh and let me know if you see
anything I can do better.. thanks!
Shawn
#!/bin/bash
WORK=/home/backup/working
SCRIPTS=/home/backup/scripts
TARGET=/home/backup/days
#make sure our directories exist
[ ! -d $WORK ] && mkdir -p $WORK
[ ! -d $SCRIPTS ] && mkdir -p $SCRIPTS
[ ! -d $TARGET ] && mkdir -p $TARGET
#set up the day directory
DAY=`date +%a `
rm -rf /home/backup/days/$DAY #remove the directory so
we don't have any old backups kicking around
mkdir -p "/home/backup/days/$DAY" #create the "day"
directory (i.e. Sun, Mon, Tue, etc.)
echo "*************************************" >> $TARGET/$DAY/backup.log
echo "** Starting backup **" >> $TARGET/$DAY/backup.log
echo "*************************************" >> $TARGET/$DAY/backup.log
echo `date` >> $TARGET/$DAY/backup.log
echo "" >> $TARGET/$DAY/backup.log
echo "*************************************" >> $TARGET/$DAY/backup.log
echo "** Backup Scripts **" >> $TARGET/$DAY/backup.log
echo "*************************************" >> $TARGET/$DAY/backup.log
#execute each of the backup scripts
for f in `ls $SCRIPTS`
do
## Each Script is simply another BASH file that executes the
commands
## to copy the desired files into the working directory. For
instance
## if we were rsync'ing a remote website into the working
directory, we
## would place it in $WORK/[remote_site_name]/
echo "**** Executing backup script: $f" >> $TARGET/$DAY/backup.log
$SCRIPTS/$f >> $TARGET/$DAY/backup.log
done
echo "*************************************" >> $TARGET/$DAY/backup.log
echo "** Tar Files **" >> $TARGET/$DAY/backup.log
echo "*************************************" >> $TARGET/$DAY/backup.log
#create the tar file
cd $WORK
for d in `ls $WORK`
do
echo "**** Creating tar file for directory: $d" >>
$TARGET/$DAY/backup.log
tar cvzf $TARGET/$DAY/$d.tar.gz $d/ >> $TARGET/$DAY/backup.log
done
echo "" >> $TARGET/$DAY/backup.log
echo `date` >> $TARGET/$DAY/backup.log
echo "*************************************" >> $TARGET/$DAY/backup.log
echo "** Backup Finished **" >> $TARGET/$DAY/backup.log
echo "*************************************" >> $TARGET/$DAY/backup.log
_______________________________________________
clug-talk mailing list
clug-talk@clug.ca
http://clug.ca/mailman/listinfo/clug-talk_clug.ca
Mailing List Guidelines (http://clug.ca/ml_guidelines.php)
**Please remove these lines when replying