web-dev-qa-db-ja.com

rsyncとのmtime比較のみを使用しますか?

rsyncを介してファイルを同期し、rsyncにmtime情報のみを比較させることは可能ですか?

または、この仕事のための別のツールはありますか?

つまり、このようなツールは、srcが宛先よりも新しい場合にのみ、srcを宛先にコピーします。 GNU cp --update-だけでなく、ssh ..にも匹敵します。

4
maxschlepzig

はい、可能です。 rsyncにも--updateがありますが、srcが新しい場合に備えて、rsyncは引き続きデルタ転送アルゴリズムを使用します。 rsyncは、このアルゴリズムを無効にする--whole-fileオプションを提供します。したがって、

$ rsync --update --whole-file ...

srcファイルは、新しい場合にのみ宛先にコピーされるという効果があります。また、これにはmtimeチェックのみを使用する必要があります。

特別なユースケースでデルタ転送アルゴリズムを回避する理由はいくつかあります。主にパフォーマンス上の理由と、非常に特殊な場合の転送量。

マンページから引用するには:

-W、-whole-file

このオプションでは、rsyncのデルタ転送アルゴリズムは使用されず、代わりにファイル全体がそのまま送信されます。ソースマシンと宛先マシン間の帯域幅がディスクへの帯域幅よりも高い場合(特に「ディスク」が実際にネットワーク化されたファイルシステムである場合)にこのオプションを使用すると、転送が高速になる可能性があります。これは、ソースと宛先の両方がローカルパスとして指定されている場合のデフォルトですが、バッチ書き込みオプションが有効になっていない場合に限ります。

ネットワーク化されたファイルシステムに関するケースが最も一般的なケースです。

また、デルタ転送アルゴリズムはヒューリスティックであるため、アルゴリズムがファイル全体を転送し、(時間とスペースの)オーバーヘッドを追加するだけのファイルを想像できます。

5
maxschlepzig