Windows上的Rsync:创建的目录的权限错误

use*_*986 47 windows rsync

我正试图通过Windows(cygwin)上的ssh将更改推送到我的服务器rsync.我使用的命令是:

rsync -rvz -e ssh/cygdrive/c/myfolder/rsyncuser@192.168.1.110:/ srv/www/prj112/myfolder /

/srv/www/prj112/myfolder/由...拥有rsyncuser.我的问题是尽管rsync子目录是在发布时创建的,但每个目录都被赋予了默认权限,d---------因此rsync无法复制其中的任何文件.

我该如何解决?

Lar*_*man 68

在Cygwin 1.7版中,忽略NTFS权限的选项已更改.这可能是导致问题的原因.

尝试将"noacl"标志添加到C:\ cygwin\etc\fstab中的Cygwin挂载中,例如:

none /cygdrive cygdrive user,noacl,posix=0 0 0
Run Code Online (Sandbox Code Playgroud)

您可以使用'chmod'选项通过rsync传递自定义权限:

rsync -rvz --chmod=ugo=rwX -e ssh source destination
Run Code Online (Sandbox Code Playgroud)

  • --chmod = Du = rwx,Dgo = rx,Fu = rw,Fgo = r(755DIRs 644FILEs,默认值) (18认同)
  • 如果您独立于cygwin安装运行,请使用`cygpath`实用程序来识别要用`cygpath -w/etc/fstab`写入的`fstab`的位置.这通常是相对于`%TMP%`或当前目录. (2认同)

sra*_*sra 7

您的问题源于这个目录上的Unix权限确实是0的事实.所有访问信息都存储在单独的ACL中,rsync不会复制.因此,它将远程副本上的权限设置为0,显然,之后无法写入该目录.你可以跑

chmod -R 775
Run Code Online (Sandbox Code Playgroud)

在该目录上,它应该修复您的rsync问题.

在查看了联机帮助页后,我可以看出,自版本~2.6.8以来,chmod param在rsync中可用.但你必须--chmod=ugo=rwX结合使用rsync -av

您还应该尝试以下命令:

rsync -av <SOURCE_DIR> rsyncuser@192.168.1.110:/srv/www/prj112/myfolder
Run Code Online (Sandbox Code Playgroud)

它至少可以在Linux上运行.请注意,rsync不需要提及ssh - 至少在Linux上是这样.

但如果一切都失败了,只是给出一个选项,你可以看看这个准备好的打包工具cwRsync


Evi*_*per 7

如果你从windows部署一个站点(例如octopress使用rsync),可以设置775添加多个chmod命令的权限:

   rsync -avz --chmod=ug=rwx --chmod=o=rx -e ssh
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这似乎也是755的文件,而不仅仅是目录,通常不建议用于Web主机. (2认同)