私はrsync
Windows(Cygwin)でこれを使用して、共有フォルダ(別のWindowsインスタンス)からNFSリポジトリにファイルを移動しています。共有フォルダをあるドライブにマップし、NFSフォルダを別のドライブにマウントしました。
rsync
次のようにコマンドを起動します。
C:\cygwin64\bin\rsync.exe -vrH --perms --partial --delete --stats --log-file=/home/Administrator/rsynclogs/backup.log /cygdrive/z/ /cygdrive/w/
30分間実行した後にエラーが原因で失敗した場合、〜17,000個のファイルが転送されました。
rsync: write failed on "/cygdrive/w/domainName/Uploads/index_635244981053162421.html": Permission denied (13)
権限拒否エラーの理由は表示されません。たとえば、ファイルを手動でコピーすると、正常にコピーされます。
私はこれがrsync
プロトコルの欠点であることを知っています。プロトコルは、rsync
宛先への書き込み権限があるかどうかを事前に確認することはできません。代わりに、後で成功または失敗を送信して確認します。
NFSサーバーにアクセスできませんssh
。これはストレージインスタンスです。ソースWindowsクライアントにCygwinがありますが、NFSストレージにアクセスできません。
私たちは以前の2008サーバーから新しいサーバーに移行しています。変更の1つは、すべてのストレージを共有nfsストレージに移動することです。この構成は完璧ではありませんが、一時的なものであることを知っています。約1ヶ月間正常に動作するために必要です。残念ながら、NFSサービスは2008サーバーにインストールできません。それ以外の場合、rsyncは必要ありません。
エラーが発生してもコピーを実行し続けるにはどうすればよいですか?
次のオプションを使用したいと思います。
--partial-dir=DIR
--delay-updates
--inplace
--ignore-errors
しかし、それが実際に私の問題を解決しているようではありません。どんな提案がありますか?
答え1
rsync
ファイルを再コピーする必要があるかどうかを認識できるように、ファイルの時間を維持するようにコマンドを変更することをお勧めします。これを行うには、--times
フラグ()を使用してください。-t
権限エラーが一時的であると述べたので、プロセスをループに入れることをお勧めします。ファイルに入れて実行してみてくださいbash
#!/bin/bash
while :
do
rsync -rptv --partial --delete --stats --log-file=/home/Administrator/rsynclogs/backup.log /cygdrive/z/ /cygdrive/w/ && break
sleep 30
done
-rpt
-a
可能な改善方法として、フラグを--archive
ファイルの所有権を維持する()に置き換えることも検討できます。