Compile as script
The basic form of this script is from the rsync website. In fact, there is only one command:
Rsync-force-ignore-errors-delete-excluded-exclude-from = exclude_file-backup-dir = 'date + % Y-% m-% d'-av
Key parameters are:
-Backup: backup files before Overwriting
-Backup-dir = 'date + % Y-% m-% d': Creates a backup directory for the backup file, which looks like: 2002-08-15
-Av: archive mode and verbose mode.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
#!/bin/sh
#########################################################
# Script to do incremental rsync backups
# Adapted from script found on the rsync.samba.org
# Brian Hone 3/24/2002
# This script is freely distributed under the GPL
#########################################################
##################################
# Configure These Options
##################################
###################################
# mail address for status updates
# - This is used to email you a status report
###################################
MAILADDR=your_mail_address_here
###################################
# HOSTNAME
# - This is also used for reporting
###################################
HOSTNAME=your_hostname_here
###################################
# directory to backup
# - This is the path to the directory you want to archive
###################################
BACKUPDIR=directory_you_want_to_backup
###################################
# excludes file - contains one wildcard pattern per line of files to exclude
# - This is a rsync exclude file. See the rsync man page and/or the
# example_exclude_file
###################################
EXCLUDES=example_exclude_file
###################################
# root directory to for backup stuff
###################################
ARCHIVEROOT=directory_to_backup_to
#########################################
# From here on out, you probably don't #
# want to change anything unless you #
# know what you're doing. #
#########################################
# directory which holds our current datastore
CURRENT=main
# directory which we save incremental changes to
INCREMENTDIR=`
date
+%Y-%m-%d`
# options to pass to rsync
OPTIONS="--force --ignore-errors --delete --delete-excluded \
--exclude-from=$EXCLUDES --backup --backup-
dir
=$ARCHIVEROOT/$INCREMENTDIR -av"
export
PATH=$PATH:
/bin
:
/usr/bin
:
/usr/local/bin
# make sure our backup tree exists
install
-d $ARCHIVEROOT/$CURRENT
# our actual rsyncing function
do_rsync()
{
rsync
$OPTIONS $BACKUPDIR $ARCHIVEROOT/$CURRENT
}
# our post rsync accounting function
do_accounting()
{
echo
"Backup Accounting for Day $INCREMENTDIR on $HOSTNAME:"
>
/tmp/rsync_script_tmpfile
echo
>>
/tmp/rsync_script_tmpfile
echo
"################################################"
>>
/tmp/rsync_script_tmpfile
du
-s $ARCHIVEROOT/* >>
/tmp/rsync_script_tmpfile
echo
"Mail $MAILADDR -s $HOSTNAME Backup Report < /tmp/rsync_script_tmpfile"
Mail $MAILADDR -s $HOSTNAME Backup Report <
/tmp/rsync_script_tmpfile
echo
"rm /tmp/rsync_script_tmpfile"
rm
/tmp/rsync_script_tmpfile
}
# some error handling and/or run our backup and accounting
if
[ -f $EXCLUDES ];
then
if
[ -d $BACKUPDIR ];
then
# now the actual transfer
do_rsync && do_accounting
else
echo
"cant find $BACKUPDIR"
;
exit
fi
else
echo
"cant find $EXCLUDES"
;
exit
fi