Bash
Hosting
Web Development
MythTV
Cron
Email
Firefox
Exch
XUL
Linux
Windows
Wireless
Culture
VOIP
MP3
Telephony
XML
RSS
Games
Networking
DRM
Google
Microsoft
OpenOffice
PHP
Yahoo
Apple
Java
Photography
Hardware
Video
Wordpress
Javascript
Backups
Adobe
Python
Client to Server Backups
I have intentions to look into Bacula as a disk-to-disk backup solution, however until then I am using the following script for Kubuntu Dapper -> Debian Etch backups, and a modified one for Windows XP Home -> Debian Etch.
It all uses rsync, and requires password-less key based ssh connections. I am using rsync, OpenSSH, and for Windows XP a little Cygwin magic (including modifying this script to make it Windows friendly).
client-to-server-rsync-backup.sh
#!/bin/bash
#ver 1.0.3
BACKUPSERVERUSER=limitedUserOnServer
BACKUPSERVER=serverHostName
BACKUPCLIENT=`echo $(hostname -s) | tr '[:upper:]' '[:lower:]'`
BACKUPS=(
#localFolder,backupDestinationParentFolder
#/home,/media/md2/backups/clientname
#/var/www,/media/md2/backups/clientname/var
)
if [ "$1" != "--incremental" ] && [ "$1" != "--sync" ] && [ "$1" != "--help" ]; then
echo $0: missing operand
echo Try `$0 --help' for more information.
elif [ "$1" = "--help" ]; then
echo " Usage: $0 [OPTION]... [PASSTHROUGH OPTIONS]";
echo "";
echo " Mandatory arguments:";
echo " [OPTION]";
echo " --incremental add to the existing backups";
echo " --sync sync the live data with the existing backup";
echo "";
echo " Optional arguments:";
echo " [PASSTHROUGH OPTIONS]";
echo " Passthrough options are sent to rsync in this form from this script:";
echo "";
echo " for incremental:";
echo " sudo rsync -avz [PASSTHROUGH OPTIONS] $SOURCE $BKUPSRVUSER@ \";
echo " $BKUPSRV:$DEST";
echo "";
echo " and for sync:";
echo " sudo rsync -avz [PASSTHROUGH OPTIONS] --delete $SOURCE \";
echo " $BKUPSRVUSER@$BKUPSRV:$DEST";
echo "";
echo " * This makes it easy to do something like this:";
echo " * $0 --incremental \"--partial --progress\"";
echo " *";
echo " * Thus sending \"--partial --progress\" to rsync,";
echo " * making this script a little more interactive...";
echo " * read more via `man rsync'.";
else
if [ "$1" = "--incremental" ]; then
incremental_or_sync="";
elif [ "$1" = "--sync" ]; then
incremental_or_sync="--delete";
fi
for BACKUPS in ${BACKUPS[@]}; do
SOURCE=`echo $BACKUPS | cut -d',' -f1`
DESTINATION=`echo $BACKUPS | cut -d',' -f2`
echo
echo "# starting backup"
echo "# from: $BACKUPCLIENT:$SOURCE"
echo "# to: $BKUPSRV:$DEST"
echo
echo sudo rsync -avz $2 $inc_or_sync $SOURCE $BKUPSRVUSER@$BKUPSRV:$DEST
sudo rsync -avz $2 $inc_or_sync $SOURCE $BKUPSRVUSER@$BKUPSRV:$DEST
echo
done
fi
This entry was posted on Saturday, March 15th, 2008 at 11:37 am.
You can follow any responses to this entry through the RSS 2.0 feed.
You can leave a response, or trackback from your own site.