I use a self written bash script for it using rsync and cpio: http://pastebin.com/uRdH2uQf
So, the first thing I have done is create a directory structure. I work like this:
create a backup every day, the 7th day (sunday) I take the last backup (previous week sunday) and put it in weekly. Every 4 weeks I keep a monthly backup.
All these backups are incremental and based on 1 full backup.
my directory structure is based in /mnt/backups and looks like this:
--- SERVER1
|--- daily
| --- 0
| --- 1
| --- 2
| --- 3
| --- 4
| --- 5
| --- 6
|--- weekly
|--- 0
|--- 1
|--- 2
|--- 3
|--- monthly
| --- 0
| --- 1
| --- 10
| --- 2
| --- 3
| --- 4
| --- 5
| --- 6
| --- 7
| --- 8
| --- 9
I also use a script to quickly create this structure : http://pastebin.com/LyFLBZGx
So, all my scripts are located in /root/backup_tools. The backup.sh script is placed into crontab to run every day. I have key-exchange from my backup server to all of my servers I need to backup.
In my tools dir I place my exclude files (folders / files I do not want to backup) in this format:
rsync.exclude.server1
These files contain the not to backup dirs :
/proc
/sys
/tmp
I also use my /.ssh/config file to add the hosts (f.e.: server1.example.com is defined as server1 with ssh port xxxx and username foo). This makes it a lot easier to add the servers to backup in the first line of the script.
Host server1
User root
Port 31337
Hostname server1.example.com
The script will check the rule SERVERS="" and for every server defined there (space seperated) it will start an incremental backup (and excluding all the dirs in the exclude files).
It will use cpio for the rotating of the dirs (cpio allows a copy with link to the actual block on the disk, so the file will show up twice on your hard drive, and only use space once. Its not a symlink either, because when you delete the original file, the duplicate will still be readable)
I hope this was somewhat clear.
The bash script is not perfect, but it does its job. I use it to backup 4 servers every night. I have backups of a couple of months now and they are not big. It is really space saving.