我有两个目录,每个目录中都有相同的 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 是存档会保留它,但你显然也不会使用它)