web-dev-qa-db-ja.com

WindowsでのRsync:作成されたディレクトリの誤ったアクセス許可

rsyncを使用して、Windows上のssh(cygwin)を介してサーバーに変更をプッシュしようとしています。私が使用しているコマンドは次のとおりです。

rsync -rvz -e ssh/cygdrive/c/myfolder/[email protected]:/ srv/www/prj112/myfolder /

/srv/www/prj112/myfolder/rsyncuserが所有しています。私の問題は、rsyncを使用しても、サブディレクトリが公開時に作成されるにもかかわらず、各ディレクトリにはd--------- so rsyncはその中のファイルのコピーに失敗します。

どうすれば修正できますか?

46
user391986

NTFSアクセス許可を無視するオプションは、Cygwinバージョン1.7で変更されました。これが問題の原因である可能性があります。

C:\ cygwin\etc\fstabのCygwinマウントに「noacl」フラグを追加してみてください。例:

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

'chmod'オプションを使用して、rsyncを介してカスタムアクセス許可を渡すことができます。

rsync -rvz --chmod=ugo=rwX -e ssh source destination
66
Lars Wiegman

windowsからサイトを展開する場合(たとえば、octopressでrsyncを使用する場合)、複数のchmodコマンドを追加して775にアクセス許可を設定することができます。

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

あなたの問題は、そのディレクトリのUnixパーミッションが実際に0であるという事実に起因します。すべてのアクセス情報は、rsyncがコピーしない個別のACLに保存されます。したがって、リモートコピーのアクセス許可を0に設定し、明らかにそのディレクトリに後で書き込むことはできません。走れます

chmod -R 775

そのディレクトリで、rsyncの問題を修正します。

マンページを見ると、バージョン2.6.8以降、chmodパラメーターがrsyncで使用できることがわかります。ただし、--chmod=ugo=rwXrsync -avと組み合わせて使用​​する必要があります

このコマンドも試してください:

rsync -av <SOURCE_DIR> [email protected]:/srv/www/prj112/myfolder

少なくともLinuxでは動作します。また、少なくともLinuxでは、rsyncはsshに言及する必要がないことに注意してください。

しかし、すべてが失敗し、オプションを提供するだけの場合は、この準備が整ったツールを見てください cwRsync

7
sra

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%

等々。これにより、ディレクトリが755、ファイルが644のアクセス許可で、ディレクトリmySensibleDatamyOtherSensibleData、およびmyOtherSensibleData2がバックアップされます。また、バックアップごとに%B​​ACKUPLOGFILE%でバックアップログを取得します。

2
codingdave

Cygwin rsyncは、一部のプロセスがターゲットファイルを開いている場合、拒否された許可を報告します。 Process Explorerをダウンロードして実行し、他にファイルがロックされているかどうかを確認するか、単にファイルの名前を変更して、ファイルを開いている他のプロセスに関するWindowsエラーが表示されるかどうかを確認します。

1
Mark

また、(グローバル)環境変数CYGWINを作成して、その値をnontsecに設定することもできます。

0
Kerb