Answers:
(来自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
Cygwin的“ posix”安全性给我带来了Windows NTFS文件权限的许多问题-甚至--no-perms
与rsync一起使用。
我发现新创建的文件/文件夹不能正确继承默认权限,但是每个文件/文件夹最终<not inherited>
在Windows文件/文件夹“高级”安全性选项卡中都有很多条目。(而且这个问题不仅与rsync有关)。
我发现这篇相关文章以及此链接对于使用noacl
cygwin /etc/fstab
文件中的选项解决这些问题都非常有帮助。该解决方案的缺点是cygwin失去了设置文件/文件夹权限的能力,但是在许多情况下这并不重要。
(在本主题上进行搜索,您可能会找到设置CYGWIN = NONTSEC环境变量的参考,但这仅适用于cygwin v1.5,不适用于cygwin v1.7及更高版本。)
在带有DeltaCopy的 Windows上,我可以使其与:
rsync --perms --chmod=a=rw,Da+x ...
它甚至与 --recursive
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
希望这可以帮助!
评分最高的答案仅适用于在Windows上通过ssh使用rsync的情况。如果您使用的是cygwin rsync守护程序,则仅在/ etc / fstab中使用noacl无效,无论出于什么原因,即使您摆脱了用户并尝试使用noacl,override等,它也不尊重继承。这似乎发生了如果要同步到顶级驱动器,并在/etc/rsyncd.conf中使用path = / cygdrive / whatever。相反,您需要在/ etc / fstab中创建一个单独的挂载点,并在rsyncd.conf中使用该挂载点:
D:\ /d_drive ntfs binary,posix=0,noacl,user,override 0 0
在/etc/rsyncd.conf中,您将具有以下内容:
use chroot = yes
[d_drive]
path = /d_drive
comment = d_drive
auth users = someUser
secrets file = /etc/rsyncd.secrets
read only = false
write only = false
list = false
uid = someUser
然后,我不得不重新启动Windows系统,仅重新启动rsync服务似乎无济于事,它不断抛出chroot和chdir错误(即使已安装/ d_drive并使用chroot = false,我也可以写它)。然后,当您rsync进入Windows系统时,请使用:
cd /local/path/to/copy
rsync -rltD --no-p --no-g --no-o ./ rsync://someUser@localhost:remotePort/d_drive/
过去,我后来takeown
在提升的命令提示符下使用以下命令将Windows中的权限重新分配给当前用户:
takeown /f <NameOfFolder> /r /d Y
当然,如果首先使用正确的rsync
标志,则没有必要,但是如果您不想为rsync
已复制的文件重新运行,则建议这样做。
correct rsync flags
>那会是什么?