Here's the problem in a nutshell. We need to backup some SVN repositories, Samba shares, /home directories, postgresql nightly backups, etc. But the results are going to be written out to external USB drives (which are rotated weekly).
Mounting the USB drives is not a problem (autofs works well for this), and encrypting the drive with LUKS also works flawlessly. Currently we use rdiff-backup to backup the source files to a central server (total backup size is 800GB), then rsync the results out to the USB drive each night. This works very well, even though USB drives are slow, because only a small portion of the 800GB changes each day.
Needs:
- Maintains the ownership / permissions / ACLs (rsnapshot does not do this).
- Works well with USB drives which are mounted at different locations (/mnt/offsite/DRIVEA, /mnt/offsite/DRIVEB, ..., /mnt/offsite/DRIVEZ).
- Only writes the changes to the USB drive each night (limited backup window). The combination of rdiff-backup and rsync works well for this.
- Is smart enough that files where the file modification timestamp changed, but the contents didn't, does not cause the file to be rewritten in its entirety to the backup device.
- Capable of doing diffs of files, so that only the new bits each night get stored.
Although we like rdiff-backup + rsync, we worry a lot that the rdiff-backup directory is fragile for anything other then the latest revision. Because older revisions inside the backup are done as a series of diffs and if one of those gets corrupted, you lose all older history.
In my opinion, the rsnapshot backup tool can preserve even ACLs.
As local filesystem snapshots are handled by the rsync tool you need to customize rsync settings. By default, it uses "-a" argument which includes preserve owners/groups/permissions but not ACLs. If you want to preserve ACLs you need to pass it additional argument "-A".
There are two options in the rsnapshot configuration to customize it called rsync_short_args or rsync_long_args. The default behaviour can be changed this way: