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

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

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

/srv/www/prj112/myfolder/rsyncuser拥有。 我的问题是,尽pipe使用rsync的子目录创build时,他们发布,每个目录都分配了默认的权限d---------所以rsync无法复制其中的任何文件。

我该如何解决?

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

尝试添加'noacl'标志到C:\ cygwin \ etc \ fstab中的Cygwin坐骑,例如:

 none /cygdrive cygdrive user,noacl,posix=0 0 0 

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

 rsync -rvz --chmod=ugo=rwX -e ssh source destination 

如果您从Windows部署站点(例如使用rsync的八度数),可以将权限设置为775,添加多个chmod命令:

  rsync -avz --chmod=ug=rwx --chmod=o=rx -e ssh 

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

 chmod -R 775 

在该目录,这应该解决您的rsync问题。

看看手册页,我可以告诉,从版本2.6.8以来,rsync中的chmod参数是可用的。 但是你必须使用--chmod=ugo=rwX结合rsync -av

你也应该试试这个命令:

 rsync -av <SOURCE_DIR> rsyncuser@192.168.1.110:/srv/www/prj112/myfolder 

它至less可以在Linux上运行。 请注意,rsync不需要提及ssh – 至less在Linux上。

但是,如果所有失败,只是给一个选项,你可以看看这个现成的打包工具cwRsync

要从Windows到Unix / Linux的rsync,你应该提供一个类似的命令

 SET BACKUP_SERVER=my.backup.server SET SSH_USER=theUnixUserName SET STORAGEPATH=/home/%SSH_USER%/Backup/ SET STORAGEURI=%BACKUP_SERVER%:%STORAGEPATH% SET SSH_ID=/cygdrive/c/Users/theWindowsUserName/Documents/keyfiles/id_dsa SET EXCLUDEFILE=backup_excludes.txt SET BACKUPLOGFILE=/cygdrive/c/Users/theWindowsUserName/Backuplogs/backup-%DATE%-%TIME::=-%.log 

那么ssh命令是

 SET BACKUP=rsync -azvu --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r --rsh="ssh -l %SSH_USER% -i '%SSH_ID%'" --exclude-from=%EXCLUDEFILE% --delete --delete-excluded --log-file="%BACKUPLOGFILE%" 

backup_excludes.txt包含像被忽略的元素行

 .git .svn .o \Debug \Release 

那么你可以在脚本中使用这个

 %BACKUP% /cygdrive/c/mySensibleData %STORAGEURI% %BACKUP% /cygdrive/c/myOtherSensibleData %STORAGEURI% %BACKUP% /cygdrive/c/myOtherSensibleData2 %STORAGEURI% 

等等。 这将备份你的目录mySensibleDatamyOtherSensibleDatamyOtherSensibleData2 ,目录权限为755,文件权限为644。 您还可以在每个备份的%BACKUPLOGFILE%中获得备份日志。

当一些进程打开目标文件时,Cygwin rsync将报告拒绝权限。 下载并运行Process Explorer,找出是否有其他东西在locking文件,或者只是简单地尝试重命名文件,看看是否有关于打开文件的其他进程的Windows错误。

此外,您可以尝试创build(全局)环境variablesCYGWIN并将其值设置为nontsec