我尝试通过SSH在两台计算机之间进行rsync(源:macOS 10.11.6 - > Dest:macOS 10.12.4),并希望保留所有mac特定属性以及权限和所有权。
我使用patch,fileflags,crtimes和hfs-compression在两台机器上从源代码构建并安装了最新的rsync(3.1.2)。
我在目标计算机上修改了/ etc / sudoers并添加了: username ALL =(ALL)NOPASSWD:ALL 这似乎工作得很好,因为我在使用sudo时没有要求输入密码。 (我知道我可以将此限制为只有rsync命令,但在调试期间我在这里使用ALL)
执行:
rsync -avNHAXEx --safe-links --fileflags --protect-decmpfs --force-change -- progress --delete --rsync-path="sudo /usr/local/bin/rsync" --progress /path/to/src ssh_user@IP_of_dest:/path/to/dst
除了文件具有Posix所有者' ssh_user'之外,会产生正确的同步。而不是目标计算机上的原始所有者。
一个简单的
rsync -av --rsync-path="sudo /usr/local/bin/rsync" /path/to/src ssh_user@IP_of_dest:/path/to/dst
还修改了所有权,并且在目标计算机上使用sudo执行的rsync拉取给出了相同的结果。
那么,我在这里错过了什么?不应该 - 目的地的超级权利和足够的权利吗?
答案 0 :(得分:0)
回答这个问题,以便在有人有类似经历的情况下作为未来参考
经过更多调试后,我想我找到了答案。 rsync正在按预期执行,问题是ssh_user和file_owner实际上都具有相同的UID。在目标计算机上列出文件严重混淆了我作为这些文件显示属于ssh_user。使用--numeric -ids并将文件还原回源计算机会得到预期的结果。