I have a few Ubuntu (and potentially RHEL) servers I'd like to back up to a central backup server (via rsh/SSH). I'd like to do both snapshot and incremental backups. The goal is that if one of the backed-up servers were to suddenly die, I could install a bootstrap image, restore from the backup and ideally be up-and-running immediately thereafter.These servers have unique users and groups and some different gids and uids for the same names. I was considering rsync (local backups work fine, and I have fine-grained control so I can back up xattrs and ACLs as well) but then I realized rsync to a remote server likely won't retain these nuances as expected.So, what's a better way to accomplish this? Is there a package that is commonly used for this purpose?
Performing accurate snapshot and incremental backups to a remote server
ubuntu;rhel;backup;rsync;snapshot
Edit: Thanks all! I'm now aware of some other packages to do the job, and I know a lot more about rsync internals. For those who may also wonder this, if you rsync to another machine with the --numeric_ids option, it won't try and map or create the UIDs/GIDs, it'll just pass them as-is. The ownership of the items in the backup directory may look odd, but it'll match 1:1 on restore (assuming part of what you restore involves the original mapping files, if you're restoring to a new machine).Here's the exhaustive list of options I'm now using for a full system backup (as root via sudo). Note that {{my_exclusions}} is an exercise for the reader (I'm still having some trouble getting that to work as it should). Also note the use of --link-dest... if that directory exists on the target, hard links will be made wherever to files already present in that previous backup which are unchanged in the current one.rsync \  --recursive \  --links \  --hard-links \  --perms \  --acls \  --xattrs \  --owner \  --group \  --devices \  --specials \  --times \  --one-file-system \  --partial \  --numeric-ids \  --compress \  --delete-during \  --stats \  --human-readable \  --progress \  --verbose \  --super \  --log-file=/tmp/my.log \  --link-dest=/backup/latest_backup \  --exclude={{my_exclusions}} \  --link-dest=/backup/latest \  / \  {{remote_hostname_or_ip}}:/backup/new_backup