прокрутка контрольных сумм в rsync алгоритме

Я подозреваю условие, которое Вы ищете, DUP_VAL_ON_INDEX

EXCEPTION
    WHEN DUP_VAL_ON_INDEX THEN
        DBMS_OUTPUT.PUT_LINE('OH DEAR. I THINK IT IS TIME TO PANIC!')

8
задан Jason S 8 October 2009 в 01:04
поделиться

1 ответ

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

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

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

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

A B Cabc D

получатель:

A B C D

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

16
ответ дан 5 December 2019 в 10:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: