[英]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=rwX
與rsync -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%
等等。 這將備份您的目錄mySensibleData , myOtherSensibleData和myOtherSensibleData2 ,其目錄權限為755,文件為644。 您還可以在每個備份的%BACKUPLOGFILE%中獲取備份日志。
當某個進程打開目標文件時,Cygwin rsync將報告拒絕權限。 下載並運行Process Explorer並查看是否還有其他內容正在鎖定文件,或者只是嘗試重命名該文件,看看是否有關於文件打開的其他進程的Windows錯誤。
此外,您可以嘗試創建(全局)環境變量CYGWIN
並將其值設置為nontsec
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.