使用-a作为sudo执行rsync并不保留文件所有权

时间:2017-05-05 10:13:51

标签: macos rsync

我尝试通过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拉取给出了相同的结果。

那么,我在这里错过了什么?不应该 - 目的地的超级权利和足够的权利吗?

1 个答案:

答案 0 :(得分:0)

回答这个问题,以便在有人有类似经历的情况下作为未来参考

经过更多调试后,我想我找到了答案。 rsync正在按预期执行,问题是ssh_user和file_owner实际上都具有相同的UID。在目标计算机上列出文件严重混淆了我作为这些文件显示属于ssh_user。使用--numeric -ids并将文件还原回源计算机会得到预期的结果。