1

私はrsyncユーティリティを使用していましたが、「ファイルのどの部分が変更されたかを判断する」セクションで、次のように述べています

ここで疑問が生じます:

  • 受信者は重複しないブロックのチェックサムを計算するのに、送信者はサイズ S の重複ブロックを計算するのはなぜですか?
  • また、Sサイズは差出人も受取人も同じですか?
  • オーバーラップブロックとは?それは、次のようなテキストがあるとします。abcdefgh受信s=4者はチェックサムを計算しabcdefghそれらを送信者に送信します。そして、送信者は次のチェックサムを計算します:abcd、、、、(この重複するチャンクです)、受信者と比較しますbcdecdefdefgefgh
  • では、送信側と受信側で異なる差分部分をどのように計算するのでしょうか?
4

1 に答える 1

4

受信者が重複するすべてのチャンクのローリング チェックサムを計算した場合、ファイルのサイズとほぼ同じ数のチェックサムが存在します。そのため、チェックサムを送信者に送信すると、ファイルの内容全体を送信するよりも費用がかかり、節約にはなりません。そのため、受信者はファイルを大きな重複しないチャンクに分割し、少数のチェックサムとハッシュを送信できるようにします。

サイズ S は、送信者と受信者で同じである必要があります。そうしないと、チェックサムとハッシュが一致することは期待できません。

アルゴリズムの詳細については、こちらを参照してください。S が送信者と受信者で同じであることは明らかです。

これが例です。受信者のファイルが次のとおりであるとします。

abcdefghijkl

abcdおよび S = 4. 受信者は、efgh、のチェックサムとハッシュをijkl送信者に送信します。

送信側のファイルに 1 文字 X が挿入されているとします。

abcdeXfghijkl

以下のチェックサムを計算します。

abcd
bcde
cdeX
deXf
eXfg
Xfgh
fghi
ghij
hijk
ijkl

これらを受信者から受け取ったチェックサムと比較し、変更されていないことabcdを確認します。ijkl送信する必要があるのは、これがチャンクeXfghを置き換える必要があるという指示を伴うことだけです。efgh

于 2013-10-18T03:32:24.637 に答える