web-dev-qa-db-ja.com

rsyncは、ディレクトリのファイルリストを作成するときに、ディレクトリのatimeエントリを無視できますか?

Rsyncを使用して、ローカルLVMドライブからローカルにマウントされたglusterfsマウントにデータをコピーしています。それらを同期させて、最終的にはglusterfsマウントを使用するように切り詰めようとしています。これが私が使用しているコマンドです:

rsync -av --inplace --no-whole-file /mnt/lvm-ext4/ /mnt/gluster

現在、初期データのプッシュを実行しており、追加された新しいファイルに追いつくようにしています。 LVMボリュームには現在約14TBのデータと約2500万の小さなファイルがありますが、rsyncはこれほど多くのファイルで苦しんでいると思います。

この2回目の実行の出力を見ていると、rsyncが出力しているエントリのほとんどがディレクトリエントリであり、実際のファイルの小さなセットが移動されていることがわかります。これは、ディレクトリが変更され、それらの時刻が更新されたため、リモート側でそれらを更新するためにrsyncが必要になったためだと思います。私は最近、nodiratimeマウントオプションについて学び、それを今日適用したので、将来の同期に役立つことを願っています。

これらのディレクトリ更新を含めてrsyncを無視し、新しい/変更されたファイルまたは新しいディレクトリのみを転送する方法はありますか? --ignore-timesと--checksumのオプションを見てきましたが、それらはすべて包括的であるようです。

3
Ken S.

あなたの問題が実際にディレクトリのタイムスタンプに関連しているとは思いません。

非常に多くのデータがあるため、rsyncは、変更されたファイルを検出して転送を開始するのに少し時間がかかるだけです。その間にディレクトリa/m/ctimeの変更を検出すると、受信側でその変更が複製されますが、これはほぼ瞬時に行われます。

1
shodanshok