簡體   English   中英

Windows上的Rsync:創建的目錄的權限錯誤

[英]Rsync on Windows: wrong permissions for created directories

我正在嘗試使用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 我的問題是,盡管使用rsync子目錄是在發布時創建的,但每個目錄都被分配了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部署一個站點(例如octopress使用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以來,chmod param在rsync中可用。 但是你必須將--chmod=ugo=rwXrsync -av結合使用

您還應該嘗試以下命令:

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

它至少可以在Linux上運行。 請注意,rsync不需要提及ssh - 至少在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並查看是否還有其他內容正在鎖定文件,或者只是嘗試重命名該文件,看看是否有關於文件打開的其他進程的Windows錯誤。

此外,您可以嘗試創建(全局)環境變量CYGWIN並將其值設置為nontsec

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM