Here at home, I'm extremely happy with rsnapshot as a backup solution. It's exactly what I need: easy to configure (with just a few pitfalls), totally transparent, and very reliable. Too bad I can't use it at work: the incremental backups of rsnapshot rely on hard links, which are supported neither by cifs nor by sshfs. And no, I do not want a server-based (pull) backup. I want to push my data!
We briefly thought about setting up nfs, but that requires kerberos for secure authentication ... oh well, that's really too much hassle for a lonely snake. I instead decided to search an easy-to-use backup program which does not require hard links. Easy to use, mind you: enterprise-class solutions of the like as bacula or amanda are explicitely ruled out.
And I think I found one: rdiff-backup, which realizes incremental backups via rdiff.
The configuration is simple:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
#!/bin/bash # http://www.gnu.org/savannah-checkouts/non-gnu/rdiff-backup/examples.html # http://wiki.rdiff-backup.org/wiki/index.php/Main_Page # http://wiki.rdiff-backup.org/wiki/index.php/BackupToSshfsMount # http://en.kioskea.net/faq/sujet-746-rdiff-backup-making-effective -and-incremental-backups # Be nice to the hard disk ionice -c3 -p$$ # Some variables source="/home/cobra" # directory being backed up destination="/mnt/home/rdiff" # directory backing up to excludelist="/home/cobra/bin/exclude_from_backup.txt" # Mount home (check your local uid and gid with id) sshfs username@server:/home/users/username /mnt/home \ -o workaround=rename,uid=local_uid,gid=local_gid # Checking for old backups that need to be removed echo "Removing backups older than one month" rdiff-backup --remove-older-than 30D --no-hard-links --force $rdestination # For a list of the number and date of incremental backups, use: # rdiff-backup -l $destination # Start the backup echo "Starting backup" nice -n +15 rdiff-backup --print-statistics --no-hard-links --exclude-sockets \ --exclude-filelist $excludelist $source $destination echo "Backup complete" # Unmount home fusermount -u /mnt/home
The exclude list might look like that:
/home/cobra/.beagle/ /home/cobra/.Mail/FalseNegs/ /home/cobra/.Mail/Junk/ /home/cobra/.Mail/Worms/ /home/cobra/.Mail/trash/ /home/cobra/temp/ /home/cobra/tmp/ /home/cobra/.opera/cache4/ /home/cobra/.opera/images/ /home/cobra/.mozilla/firefox/ytuudeoq.default/Cache/ /home/cobra/.VirtualBox/ /home/cobra/VMWare/
I've just started to use it, but so far it looks very promising. Ask me again in 30 days. :)
What I will detail very soon in a forthcoming blog entry: how to automate this backup in the most convenient way.