#!/usr/local/bin/bash # Define hostname HOSTN=`hostname` # Define admin e-mail for reports MAILADDR=me@domain.tld # Define backup account name # This account name must be defined in rsyncd.conf on your backup server BACC="customer1" # Define local dir to backup LDIR=/usr/local/www # Define remote dir to backup # If you have a lot of server is very useful to have hostname as remote backup dir BDIR=/$HOSTN # Define hostname (or IP address) of the backup server BSERVER=backup.domain.tld # Here we export all possible path's, where rsync can be installed export PATH=$PATH:/bin:/usr/bin:/usr/local/bin ########################### Nothing to change below this line ##################################### BACKUPDIR=`date +%A` OPTS="--force --ignore-errors --delete --backup --backup-dir=/$BDIR/$BACKUPDIR -a" # the following line clears the last weeks incremental directory [ -d /tmp/emptydir ] || mkdir /tmp/emptydir rsync --delete -a /tmp/emptydir/ $BSERVER::$BACC/$BDIR/$BACKUPDIR/ rmdir /tmp/emptydir do_rsync() { rsync $OPTS $LDIR $BSERVER::$BACC/$BDIR/current } # our post rsync accounting function do_accounting() { echo "Backup for $HOSTN. `date +%Y-%m-%d`.">/tmp/rsync_script_tmpfile echo >> /tmp/rsync_script_tmpfile echo "################################################">>/tmp/rsync_script_tmpfile du -sh $LDIR/* >> /tmp/rsync_script_tmpfile echo "Mail -s \"$HOSTN report\" $MAILADDR < /tmp/rsync_script_tmpfile" Mail -s "$HOSTN report" $MAILADDR < /tmp/rsync_script_tmpfile echo "rm /tmp/rsync_script_tmpfile" rm /tmp/rsync_script_tmpfile } # now actual transfer do_rsync && do_accounting