我一直在尝试整理我的备份,以便在恢复文件时正确恢复所有者/组和任何其他元数据。为了进行测试,我一直通过 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 生效