我在 MacOS 上,当我使用时,--perms 标志没有出现记录rsync -h
。该标志有什么区别rsync --perms
?据说它会保留文件权限,但为什么 rsync 默认情况下不这样做呢?
答案1
该rsync -h
选项是一个摘要,而不是完整的权威文档。
man -P 'less -p --perms$' rsync
通过在 MacOS 的默认 rsync 上运行,我能够找到更多详细信息。rsync --perms
将源权限复制到您所设置的目标权限。
从手册中:
总之:要为目标文件(旧的和新的)提供源权限,请使用 --perms。要为新文件提供目标默认权限(同时保持现有文件不变),请确保 --perms 选项关闭并使用 --chmod=ugo=rwX (这可确保启用所有非屏蔽位)。
用户可能只是不想将源文件的权限复制到目标文件。例如,如果将本地配置文件复制到远程服务器,则远程服务器可能具有不同的权限集。
rsync
的支持上述用例--chmod
。其他rsync
选项如--executability
和--no-perms
建议更多用例,在这些用例中,我们不能假设每个用户/用例都期望目标文件与源文件匹配。
不同之处在于--perms
强制对目标的源权限,而默认行为 (no --perms
) 取决于相关目录和/或进程的 umask 或 setgid。
从稍远的地方开始,相同的手动条目:
关闭此选项时,权限设置如下:
- 现有文件(包括更新的文件)保留其现有权限,但“可执行性”选项可能仅更改文件的执行权限。
- 新文件的“正常”权限位设置为使用接收端的 umask 设置屏蔽的源文件的权限,并且禁用其特殊权限位,除非新目录从其父目录继承 setgid 位。