web-dev-qa-db-ja.com

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

ネットワーク経由で転送するのに長い時間がかかる非常に大きなファイルイメージファイル(わずか数ピクセルの差)に小さな変更を加えています。

Rsyncがファイルの違いを識別し、小さな差分のみをネットワーク経由で送信する方法はありますか?

15
David Parks

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

[〜#〜]説明[〜#〜]

Rsyncは高速で非常に用途の広いファイルコピーツールです。ローカル、リモートシェル経由で別のホストとの間、またはリモートrsyncデーモンとの間でコピーできます。動作のあらゆる側面を制御し、コピーするファイルのセットを非常に柔軟に指定できる多数のオプションを提供します。 これは、デルタ転送アルゴリズムで有名であり、ソースファイルと既存のファイルの違いのみを送信することで、ネットワーク経由で送信されるデータの量を減らします。宛先。 Rsyncは、バックアップとミラーリング、および日常的に使用するための改善されたコピーコマンドとして広く使用されています。

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

-W、-whole-file

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

ファイルの変更量が本当にわかっている場合は、デルタブロックサイズを調整して、このデルタ転送動作を最適化することもできます。

-B、-block-size = BLOCKSIZE

これにより、rsyncのデルタ転送アルゴリズムで使用されるブロックサイズが固定値になります。通常、更新される各ファイルのサイズに基づいて選択されます。詳細については、テクニカルレポートを参照してください。

アルゴリズム自体の詳細が必要な場合は、ここで見つけることができます: Rsyncアルゴリズム

11
user34720