====== Setup ====== You have a client with data on it you would like to make a backup of. You could make a local backup, however the client is mobile so moving the data of it is the best solution. To get this working you need a server with rsync and a ssh server installed. And of course diskspace to keep the data on. The client just need rsync capabilities. In my world that is not a problem but if you're running Windows you will need some tweaking through cygwin (not covered). ====== The script ====== rsync -avzgr --stats --protocol=29 /home/tdd /boot /etc \ --exclude=".macromedia" \ --exclude="vmware/" \ --exclude=".Trash" \ --exclude=".Trash-1000" \ --exclude="No-rsync-stuff" \ --exclude=".VirtualBox/" \ --exclude="enc-data*" \ --exclude="dataspace" \ --exclude="pagefile" \ --exclude="samba" \ --exclude="smb" \ --exclude=".ICAClient/cache" \ --exclude=".adobe/Flash_Player/AssetCache" \ --exclude=".cache" \ --exclude=".mozilla/firefox/*/Cache" \ --exclude=".nx" \ --exclude=".thumbnails" \ --exclude=".gvfs" \ --exclude=".local/share/Trash" \ --exclude=".evolution" \ tdd@192.168.1.1:/media/disk/backup > /home/tdd/backup.log if [ $? != 0 ] then rsync -avzgr --stats /home/tdd /boot /etc \ --exclude=".macromedia" \ --exclude="vmware/" \ --exclude=".Trash" \ --exclude=".Trash-1000" \ --exclude="No-rsync-stuff" \ --exclude=".VirtualBox/" \ --exclude="enc-data*" \ --exclude="dataspace" \ --exclude="pagefile" \ --exclude="samba" \ --exclude="smb" \ --exclude=".ICAClient/cache" \ --exclude=".adobe/Flash_Player/AssetCache" \ --exclude=".cache" \ --exclude=".mozilla/firefox/*/Cache" \ --exclude=".nx" \ --exclude=".thumbnails" \ --exclude=".gvfs" \ --exclude=".local/share/Trash" \ --exclude=".evolution" \ /root/backup fi Set the script to run every hour (or what timeframe you like) by editing /etc/crontab and inserting this line: @hourly root /home/tdd/backup.sh The script will test if the online backup has succeeded and if it fails make a local backup. The script has a special parameter appended %%(--protocol=29)%%. This is to make rsync (version < 3.0.4) work with rssh. ====== rssh ====== rssh is a cool feature that makes it possible to use rsync but not opening up a full shell to the user. As we only want to copy files the user shouldn't be allowed to logon to the system with ssh. Install rssh: sudo apt-get install rssh Edit the file /etc/rssh.conf and make sure the following is uncommented: allowscp allowsftp allowrsync This allows file transfer with scp, sftp and rsync. You could restrict it even further by only allowing rsync. Now edit the users shell in /etc/passwd: tdd:x:1021:1021::/home/tdd:/usr/bin/rssh ====== libnotify ====== With a Ubuntu client you can use its notification framework to tell how the backup went. Look at the following script: #!/bin/bash BACKUPLOG="/home/tdd/backup.log" su tdd -c "/usr/bin/notify-send 'Backup Start...'" 2>&1 > $BACKUPLOG rsync -avzgr --stats /home/tdd /boot /etc \ --exclude="vmware/" \ --exclude=".Trash" \ --exclude=".Trash-1000" \ --exclude="No-rsync-stuff" \ --exclude=".VirtualBox/" \ --exclude="enc-data*" \ --exclude="dataspace" \ --exclude="pagefile" \ --exclude="samba" \ --exclude="smb" \ --exclude=".ICAClient/cache" \ --exclude=".adobe/Flash_Player/AssetCache" \ --exclude=".cache" \ --exclude=".mozilla/firefox/*/Cache" \ --exclude=".nx" \ --exclude=".thumbnails" \ --exclude=".gvfs" \ --exclude="Downloads" \ --exclude=".local/share/Trash" \ --exclude=".evolution" \ --exclude="tdd/Music" \ tdd@172.21.1.1:/media/disk/backup 2>&1 > $BACKUPLOG echo $? if [ $? -eq 0 ] then NUMBEROFFILES=`grep "Number of files transferred" $BACKUPLOG |awk -F ':' '{print $2}'` su tdd -c "DISPLAY=:0.0 /usr/bin/notify-send 'Backup Succesful Completed - $NUMBEROFFILES tranferred'" else su tdd -c "DISPLAY=:0.0 /usr/bin/notify-send 'Backup Failed...'" fi After running this script a notification is display on the screen telling either how many files were backup'ed or that it failed.