rsync 和 --fake-super - 如何保留属性?

rsync 和 --fake-super - 如何保留属性?

我一直在尝试整理我的备份,以便在恢复文件时正确恢复所有者/组和任何其他元数据。为了进行测试,我一直通过 ssh 从 Ubuntu 9.10 服务器(安装了 rsync 版本 3.0.6、协议版本 30)备份到 OSX 10.6 笔记本电脑或 Ubuntu 9.10 服务器。

使用以下命令(以 root 身份执行)完成备份:

# rsync -avz --fake-super /var/www/myfolder [email protected]:/home/backups

执行此操作时不会报告任何错误。

然后我使用以下命令取回我的测试目录:

# rsync -avz --fake-super [email protected]:/home/backups/myfolder /tmp

并且对于每个文件它都会报告错误:

rsync: failed to write xattr user.rsync.%stat for "/tmp/myfolder/path/to/file": Operation not supported (95)

最初我以为这一定是因为我正在备份到 OSX,所以我再次尝试备份到 Ubuntu 服务器 - 但在恢复文件时却出现相同的错误。我在 Google 上搜索并在手册页中查找了 rsync,但没有找到任何帮助。

我的本地 Ubuntu 服务器使用 ext3,远程 Ubuntu 服务器使用 ext4,而 Mac 有 HFS

答案1

你至少做错了一件事。

首先,您在错误的连接端使用了 --fake-super。让我引用 rsync 手册页。

--fake-super 选项仅影响使用该选项的一方。要影响远程 shell 连接的远程方,请指定 rsync 路径:

rsync -av --rsync-path="rsync --fake-super" /src/ 主机:/目标/

您正在做的是在您已经是 root 的连接端运行 --fake-super。

关于“无法写入 xattr user.rsync.%stat”的部分是因为 --fake-super 使用的文件系统尚未使用标志 user_xattr 进行挂载。此挂载选项必须在您使用 --fake-super 的连接端有效,在您的原因中应该是“remoteserver.com”。

总而言之,这些是您应该运行的命令:

# rsync -avz --rsync-path="rsync --fake-super" /var/www/myfolder [email protected]:/home/backups
# rsync -avz --rsync-path="rsync --fake-super" [email protected]:/home/backups/myfolder /tmp

...在 remoteserver.com 上,安装选项 user_xattr 生效

相关内容