web-dev-qa-db-ja.com

rsyncは、変更されていないファイルを異なるファイルシステム間でコピーします

Rsyncを使用して2台のマシン間でファイルを同期しようとしましたが、ファイルの変更時間に関係なくすべてのファイルをコピーしているようです。コマンドを2回続けて呼び出すと同じ結果が得られるため、明らかに壊れています。

問題のコマンドは次のとおりです。

rsync -r local/path user@Host:/remote/path -v

ローカルファイルシステムはext4で、リモートはext3です。同じext3システムとNTFSドライブの間でファイルを同期しようとしたときに同様の問題が発生したため、問題はここにあると思われます。後者をext3に変換すると、問題が解決しました。

今回は改宗に頼ることはできません。誰かが問題の正確な原因と可能な解決策を知っていますか?

4
Joó Ádám

デフォルトでは、rsyncは変更時間とサイズに基づいてファイルをコピーしません。

コマンドラインで-tを使用していない場合、rsyncは変更時間を保持せず、サイズ+時間のチェックはもちろん失敗します。

異なるファイルシステムのタイムスタンプの精度が問題を引き起こしている可能性も十分にあります。ext4はマイクロ秒をサポートしますが、ext3は秒に制限されています。

コマンドラインに--modify-window=1を追加して、タイムスタンプを1秒の精度で処理するようにrsyncに指示してみてください。

または、-cを指定してファイルのチェックサムを強制することもできますが、帯域幅を節約できるとしても、これはもちろんmtime +サイズチェックよりもはるかに遅くなります。

6
chutz