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

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

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

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

那么,有什么更好的方法来实现这一目标呢?有没有一个常用的包来实现这个目的?

答案1

是的rsync可以选择保留 ACL、扩展属性、ext2 属性、硬链接、数字用户 ID、稀疏性...

我曾经有一个系统,将文件系统与btrfs文件系统同步到备份服务器上(在备份服务器上执行快照),由于稳定​​性问题,迁移到 zfs-on-linux(不幸的是,它还不支持 POSIX ACL) ,但也有解决方法)。

rsync您可能感兴趣的选项:--archive --one-file-system --xattrs --hard-links --delete --numeric-ids --sparse --acls以及可能用于就地同步的选项。

rsync 不做的一件事是检测重命名(尽管有一个补丁,但我不确定它的可信程度,而且它只检测文件重命名)。

zfs必须zfs send仅发送自给定快照以来完成的修改(使用 到另一个 zfs zpool zfs receive)。如果我理解正确的话,该功能btrfs也是最近添加的。因此,如果将一个文件系统备份到最新内核上的btrfs另一个文件系统上,这可能是一个选择。btrfs

答案2

看一下快照rsync,它是命令行实用程序的 perl 包装器。 Rsnapshot 向 rsync 添加了一个额外的配置层,使增量备份变得容易。 (文件的旧版本在未更改时会硬链接到当前版本。因此备份文件系统的每个增量版本看起来都像完整副本。)

另一种类似的可能性是表里不一,它是基于librsync.我知道它有一个更精美的用户界面,但我还没有使用它。或者rdiff 备份,我认为这是来自同一个开发者,或者至少曾经是这样。

当然有很多很多的备份系统。这是一个列表其中大部分可在 FreeBSD 上使用,其中大部分也可在 Linux 上使用。但我认为如果您习惯的话,我上面提到的三个是自然要考虑的rsync。 (一个很棒的工具。)

答案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

相关内容