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
はその中のファイルのコピーに失敗します。
どうすれば修正できますか?
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
windowsからサイトを展開する場合(たとえば、octopressでrsyncを使用する場合)、複数のchmodコマンドを追加して775にアクセス許可を設定することができます。
rsync -avz --chmod=ug=rwx --chmod=o=rx -e ssh
あなたの問題は、そのディレクトリのUnixパーミッションが実際に0であるという事実に起因します。すべてのアクセス情報は、rsyncがコピーしない個別のACLに保存されます。したがって、リモートコピーのアクセス許可を0に設定し、明らかにそのディレクトリに後で書き込むことはできません。走れます
chmod -R 775
そのディレクトリで、rsyncの問題を修正します。
マンページを見ると、バージョン2.6.8以降、chmodパラメーターがrsyncで使用できることがわかります。ただし、--chmod=ugo=rwX
をrsync -av
と組み合わせて使用する必要があります
このコマンドも試してください:
rsync -av <SOURCE_DIR> [email protected]:/srv/www/prj112/myfolder
少なくともLinuxでは動作します。また、少なくともLinuxでは、rsyncはsshに言及する必要がないことに注意してください。
しかし、すべてが失敗し、オプションを提供するだけの場合は、この準備が整ったツールを見てください 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%
等々。これにより、ディレクトリが755、ファイルが644のアクセス許可で、ディレクトリmySensibleData、myOtherSensibleData、およびmyOtherSensibleData2がバックアップされます。また、バックアップごとに%BACKUPLOGFILE%でバックアップログを取得します。
Cygwin rsyncは、一部のプロセスがターゲットファイルを開いている場合、拒否された許可を報告します。 Process Explorerをダウンロードして実行し、他にファイルがロックされているかどうかを確認するか、単にファイルの名前を変更して、ファイルを開いている他のプロセスに関するWindowsエラーが表示されるかどうかを確認します。
また、(グローバル)環境変数CYGWIN
を作成して、その値をnontsec
に設定することもできます。