如何告诉 rsync 不检查权限

Evg*_*kov 4 rsync file-permissions

我有两个目录,每个目录都有相同的 PHP 应用程序。我想rsync -rvz从一个源目录执行到另一个目标,因此 rsync 将仅复制更改的文件。问题是源目录中的文件错误地具有 755 权限。目的地的权限很好。

如何告诉 rsync 忽略权限检查并仅按大小检查?谢谢。

Dre*_*ury 7

只要您不提供 -p 标志,就不应该更改权限。如果您仍然没有获得期望的权限,请确保权限已关闭并使用 --chmod=ugo=rwX

供参考: http: //linux.die.net/man/1/rsync

 -r, --recursive             recurse into directories
 -v, --verbose               increase verbosity
 -z, --compress              compress file data during the transfer
 -n, --dry-run               perform a trial run with no changes made

 -p, --perms                 preserve permissions
 -E, --executability         preserve executability
     --chmod=CHMOD           affect file and/or directory permissions
Run Code Online (Sandbox Code Playgroud)

-p, --perms 此选项使接收 rsync 将目标权限设置为与源权限相同。(另请参阅 --chmod 选项,了解修改 rsync 认为的源权限的方法。)

手册页接着说:

总之:要为目标文件(旧的和新的)提供源权限,请使用 --perms。要为新文件提供目标默认权限(同时保持现有文件不变),请确保 --perms 选项关闭并使用 --chmod=ugo=rwX (这可确保启用所有非屏蔽位)。

旁注:如果可能的话,对于开发人员来说,将他们的更改推回存储库并让所有服务器使用代码存储库,而不是使用 rsync 将文件从一台服务器传送到另一台服务器可能更有意义。


小智 7

如果您提供该-a标志,-p则会自动包括在内。如果您指定--no-p所有其他选项,则-a保持不变。


agg*_*877 6

大多数选项只需在这些选项中添加--no- 前缀即可关闭。

例子:

rsync -avz --no-perms --no-owner --no-group /local-dir/ my-server:/remote-dir/
Run Code Online (Sandbox Code Playgroud)

这将禁用同步权限、所有权和组。