我有一个 rsync 服务,可以将文件从远程机器同步到将其放置在网络驱动器上的机器。
我需要复制的文件具有目标文件夹的本机权限。
同步过程运行良好,但完成后,我无法访问某些文件夹 - 权限被拒绝。
我以域管理员身份登录;它也不允许我修改所述文件夹的任何权限。这是怎么回事?
运行命令:
rsync.exe -v -rlt -z --delete "src_path" "dst_path"
答案1
(从http://www.samba.org/ftp/rsync/rsync.html)
总之:要授予目标文件(新旧文件)源权限,请使用--perms
。
要赋予新文件目标默认权限(同时保持现有文件不变),请确保该--perms
选项已关闭并使用--chmod=ugo=rwX
(这可确保所有非屏蔽位都得到启用)。
如果您希望后一种行为更容易输入,您可以为其定义一个 popt 别名,例如将此行放在文件 ~/.popt 中(以下定义 -Z 选项,并包含 --no-g 以使用目标目录的默认组):
rsync alias -Z --no-p --no-g --chmod=ugo=rwX
答案2
Cygwin 的“posix”安全性给我带来了很多 Windows NTFS 文件权限问题 - 即使--no-perms
与 rsync 一起使用也是如此。
我发现新创建的文件/文件夹无法正确继承默认权限,但每个文件/文件夹最终都会<not inherited>
在 Windows 文件/文件夹高级安全选项卡中留下大量条目。(而且这个问题不仅仅与 rsync 有关)。
我找到了这个相关帖子和此链接两者都非常有助于了解如何使用noacl
cygwin/etc/fstab
文件中的选项解决这些问题。此解决方案的缺点是 cygwin 失去了设置文件/文件夹权限的能力,但在许多情况下这并不重要。
(通过谷歌搜索该主题,您可能会找到设置 CYGWIN=NONTSEC 环境变量的参考,但这是针对 cygwin v1.5 的,在 cygwin v1.7 及更高版本中不起作用。)
答案3
在 Windows 上增量复制我可以通过以下方式让它工作:
rsync --perms --chmod=a=rw,Da+x ...
它甚至适用于--recursive
答案4
rsync,至少在 Cygwin 上有以下开关:
-A, --acls 保留 ACL(隐含 --perms)
我的 Cygwin 版本是:
CYGWIN_NT-6.3 1.7.29(0.272/5/3) 2014-04-07 13:46 x86_64 Cygwin
希望这可以帮助!