rsyncは変更されたファイルのみをコピーし、ファイル変更タイムスタンプは無視します。

rsyncは変更されたファイルのみをコピーし、ファイル変更タイムスタンプは無視します。

次の条件でrsyncを動作させることはできますか?

if len(f1) != len(f2) then rsync
if len(f1) == len(f2) and md5sum(f1) != md5sum(f2) then rsync

最も近いオプションは何ですか--checksum? ?


ベストアンサー1

rsyncマンページから:

説明する

Rsyncは、高速でさまざまなファイルコピーツールです。リモートシェルを介して別のホストに/からローカルにコピーしたり、リモートrsyncデーモンに/からコピーしたりできます。これは、動作のさまざまな側面を制御するための多くのオプションを提供し、コピーするファイルセットを指定する際の優れた柔軟性を可能にします。元のファイルと宛先にある既存のファイルの差だけを転送してネットワークに転送されるデータ量を減らす増分転送アルゴリズムとして知られています。 Rsyncはバックアップとミラーリングに広く使用され、日常的な使用のための拡張コピーコマンドとして使用されます。

Rsyncはlqquick checkrqアルゴリズム(デフォルト)を使用して転送する必要があるファイルを見つけます。サイズまたは最後の変更時間が変更されたファイルを見つけます。クイックスキャン結果ファイルのデータを更新する必要がないことが表示された場合は、他の保持された属性(オプションで要求されているように)に対するすべての変更がターゲットファイルに直接適用されます。

したがって、説明に表示される基本的な動作は次のとおりです。

  • ローカルまたはリモートで動作するレプリケーションツール
  • さまざまなオプション
  • 基本的に、増分転送アルゴリズム、ネットワーク使用量を減らすために異なるファイルセットのみを送信
  • 広く使用されているイメージングおよびバックアップツール
  • checkrq アルゴリズムは条件 1 で目的のアクションを実行します。 if len(f1) != len(f2) then rsync
  • オプションが渡されない場合、ターゲットは影響を受けるターゲットです。

さて、チェックサムに関連するオプションを見つけてください。次のトピックに関するドキュメントを検索してください。

-c, --checksum
   This changes the way rsync checks if the files have been changed and are in
   need of a transfer. Without this option, rsync uses a lqquick checkrq that
   (by default) checks if each file's size and time of last modification match
   between the sender and receiver. This option changes this to compare a 128-
   bit checksum for each file that has a matching size. Generating the checksums
   means that both sides will expend a lot of disk I/O reading all the data in
   the files in the transfer (and this is prior to any reading that will be
   done to transfer changed files), so this can slow things down significantly.

説明は--checksumまさにあなたが望むものですif len(f1) == len(f2) and md5sum(f1) != md5sum(f2) then rsync。一致するサイズのすべてのファイルに対して128ビットチェックサムを実行します。

ただし、このオプションを使用すると、状況によってはI / Oが大幅に増加する可能性があります。

おすすめ記事