对远程服务器执行准确的快照和增量备份

Mar*_*ver 7 ubuntu rhel backup rsync snapshot

我有几个 Ubuntu(可能还有 RHEL)服务器,我想备份到中央备份服务器(通过 rsh/SSH)。我想做快照和增量备份。目标是,如果其中一台备份服务器突然死机,我可以安装引导程序映像,从备份中恢复,并且最好在此后立即启动并运行。

这些服务器具有唯一的用户和组,以及一些相同名称的不同 gid 和 uid。我正在考虑 rsync(本地备份工作正常,我有细粒度的控制,所以我也可以备份 xattrs 和 ACL),但后来我意识到到远程服务器的 rsync 可能不会像预期的那样保留这些细微差别。

那么,有什么更好的方法来实现这一目标呢?是否有一个包通常用于此目的?

Mar*_*ver 3

编辑:谢谢大家!我现在知道了一些其他软件包可以完成这项工作,并且我对 rsync 内部结构有了更多了解。对于那些可能也想知道这一点的人,如果您使用 --numeric_ids 选项 rsync 到另一台计算机,它不会尝试映射或创建 UID/GID,它只会按原样传递它们。备份目录中项目的所有权可能看起来很奇怪,但在恢复时它将按 1:1 匹配(假设您恢复的部分内容涉及原始映射文件,如果您要恢复到新计算机)。

这是我现在用于完整系统备份的选项的详尽列表(通过 sudo 以 root 身份)。请注意, {{my_exclusions}} 是给读者的练习(我在使其正常工作方面仍然遇到一些困难)。另请注意 --link-dest 的使用...如果目标上存在该目录,则将在先前备份中已存在的文件(在当前备份中未更改)的任何位置建立硬链接。

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
Run Code Online (Sandbox Code Playgroud)