Windows上的rsync – 远程文件夹中的权限设置不正确

我有一个小问题。 我在窗口中使用rsync(Cygwin),并在我的远程文件夹中同步的文件是不正确的。

rsync -r /cygdrive/c/xampp/htdocs/mysite/* [email protected]:/home/mysite/public_html/ 

现在,我使用rsync来上传文件,然后我进入我的远程目录,手动更改文件/文件夹的权限。

rsync有一个选项CHMOD等?

谢谢,Wenbert

编辑:我想要的文件是644等

如果要强制目标的权限,则需要使用--chmod选项和/或--perms选项。

  • --chmod覆盖源权限(即rsync假设源权限是你指定的任何东西,而不是他们实际是什么)
  • --perms (或-p )将源权限强制到目标服务器上

例如:

 rsync --chmod=a=r,u+w,D+x -p -r /cygdrive/c/xampp/htdocs/mysite/* \ [email protected]:/home/mysite/public_html/ 

你没有提到cygwin认为源的权限是什么(例如cygwin中的ls -l /cygdrive/c/xampp/htdocs/mysite/* )或者目标端的实际权限。 如果我们知道这一点,可能会构build一些简单的东西。

要详细了解各种选项,请参阅非常详细的rsync联机帮助页 。

请注意,rsync还不支持八进制权限(例如--chmod=644 )。 根据这篇文章 ,对rsync 3.1.0的支持将会提供。

Cygwin不理解NTFS ACL,不能复制它们。 你将永远使用rsync在远程端执行高级权限。

我所使用或听到的两种方法build议解决这个问题:

  1. 定期在远程服务器上运行修复脚本,使用cacls.exe或其某些变体来更正ACL。 这种技术的核心是你的脚本需要保持最新,否则在目的地端的权限将不匹配来源。 这很难维持。
  2. 使用robocopy.exe运行跟踪您的rsync运行,但只能使用robocopy将NTFS ACL从源复制到目标。 这要求您可以使用SMB共享或类似技术连接到目标服务器,这意味着您同时支持cygwin / rsync / ssh和SMB共享。