rsyncは完全な再送信なしで部分的にのみ変更された大容量ファイルを更新できますか?

rsyncは完全な再送信なしで部分的にのみ変更された大容量ファイルを更新できますか?

ネットワーク経由で転送するのに時間がかかる非常に大きな画像ファイル(わずか数ピクセルだけ)にわずかな変更が加えられています。

rsyncがファイルの違いを識別し、ネットワークを介して小さな違いのみを送信する方法はありますか?

ベストアンサー1

rsync増分転送アルゴリズムはデフォルトでこれを行います。引用するrsync マンページ:

説明する

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

無効にするには、-Wまたは--whole-fileオプションを使用する必要があります。

-W、--フルファイル

このオプションは、転送されたすべてのファイルがそのまま転送されるようにするrsyncの増分転送アルゴリズムを無効にします。ソースコンピュータとターゲットコンピュータ間の帯域幅がディスク帯域幅より高い場合(特に「ディスク」が実際にネットワークファイルシステムの場合)、このオプションを使用すると転送速度が速くなる可能性があります。これは、ソースと宛先の両方がローカルパスとして指定されている場合はデフォルトですが、一括書き込みオプションが適用されていない場合にのみ当てはまります。

ファイルがどれだけ変更されたかを知っている場合は、デルタブロックのサイズを変更してデルタ転送の動作を最適化することもできます。

-B, --blocksize=ブロックサイズ

これは、rsyncの増分転送アルゴリズムで使用されるブロックサイズを固定値に強制します。通常、更新する各ファイルのサイズに応じて選択されます。詳しくは、テクニカルレポートをご覧ください。

アルゴリズム自体についてさらに詳しく知りたい場合は、ここで見つけることができます。再同期アルゴリズム

おすすめ記事