скользящие контрольные суммы в алгоритме rsync

StackOverflow https://stackoverflow.com/questions/1535017

  •  20-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь понять, как алгоритм rsync работает в отношении скользящих контрольных сумм и блоков, которые совпадают в шахматном порядке.

Страница Википедии, по-видимому, предполагает, что отправитель и получатель одновременно вычисляют и обмениваются скользящими контрольными суммами для всех возможных блоков.Но это означало бы отправку по существу одной контрольной суммы на байт!Должно быть, я что-то упускаю.Как это работает, чтобы иметь возможность выравнивать блоки?

например ,если S = 16 байтовых блоков, и отправитель имеет этот текст для файла A:

Быстрая коричневая лиса перепрыгивает через ленивых собак

и у получателя есть этот текст для файла B:

Быстрая коричневая лиса перепрыгнула через ленивые собаки

как будет работать rsync exchange?

Это было полезно?

Решение

Получатель вычисляет и отправляет скользящие контрольные суммы только для неперекрывающихся блоков.Отправитель, напротив, вычисляет его для каждого возможно заблокируйте (но сохраните результат локальным).Тогда для отправителя это просто вопрос проверки, совпадает ли один из неперекрывающихся блоков (отправленных получателем) с Любой (перекрывающийся) локальный блок.

Ваш пример слишком прост, чтобы увидеть что-то интересное, два последних блока просто не будут совпадать и будут отправлены на объединение.

С более интересным примером (верхний регистр - это блок):

отправитель:

A B Cabc D

приемник:

A B C D

Получатель отправит MD5 и переходящий хэш для A, B, C и D.Отправитель вычислит скользящий хэш для каждый (перекрывающийся) блок, он будет соответствовать для A, для B, для C и для D.С тех пор как abc не соответствует, он отправит его с информацией, куда его объединить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top