Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos rsync与-a作为sudo isn执行';t保存文件所有权_Macos_Rsync - Fatal编程技术网

Macos rsync与-a作为sudo isn执行';t保存文件所有权

Macos rsync与-a作为sudo isn执行';t保存文件所有权,macos,rsync,Macos,Rsync,我正在尝试通过SSH(Source:macOS 10.11.6->Dest:macOS 10.12.4)在两台机器之间进行rsync,并希望保留所有特定于mac的属性以及权限和所有权 我使用补丁、文件标志、crtimes和hfs压缩从源代码构建并安装了最新的rsync(3.1.2) 我已在目标计算机上修改了/etc/sudoers,并添加了: 用户名ALL=(ALL)NOPASSWD:ALL 这似乎工作得很好,因为我在使用sudo时并没有被要求输入密码。 (我知道我可以将此限制为仅使用rsync

我正在尝试通过SSH(Source:macOS 10.11.6->Dest:macOS 10.12.4)在两台机器之间进行rsync,并希望保留所有特定于mac的属性以及权限和所有权

我使用补丁、文件标志、crtimes和hfs压缩从源代码构建并安装了最新的rsync(3.1.2)

我已在目标计算机上修改了/etc/sudoers,并添加了: 用户名ALL=(ALL)NOPASSWD:ALL 这似乎工作得很好,因为我在使用sudo时并没有被要求输入密码。 (我知道我可以将此限制为仅使用rsync命令,但在调试期间,我使用的是ALL-here)

执行:

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 pull会得到相同的结果


那么,我错过了什么?对目的地的-a和超级权限难道还不够吗?

回答这个问题可以作为将来的参考,以防有人有类似的经历

经过更多的调试,我想我已经找到了答案。rsync正在按预期执行,问题是ssh_用户和文件所有者实际上都有相同的UID。列出目标计算机上的文件让我感到非常困惑,因为这些文件显示属于ssh_用户。使用--numeric ID并将文件还原回源计算机会得到预期的结果