Rsync - 書き込み権限が拒否されました。

Rsync - 書き込み権限が拒否されました。

私はrsyncWindows(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ファイルの所有権を維持する()に置き換えることも検討できます。

おすすめ記事