如何告诉 rsync 不检查权限

如何告诉 rsync 不检查权限

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

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

答案1

只要你不提供 -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

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

手册页继续说道:

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

旁注:如果可能的话,您的开发人员将他们的更改推回到 repo 中可能更有意义,并且让所有服务器使用代码 repo,而不是使用 rsync 将文件从一台服务器发送到另一台服务器。

答案2

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

答案3

大多数选项可以通过添加来关闭--no- 前缀这些选项。

例子:

rsync -avz --no-perms --no-owner --no-group /local-dir/ my-server:/remote-dir/

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

答案4

我可能错了,但如果没有 -p 它就不会改变权限。(此外 -a 是存档会保留它,但你显然也不会使用它)

相关内容