Представьте, что есть два очень больших файла, например папки электронной почты Thunderbird, и затем я применяю rdiff (или rsyn c) для создания файла исправления, который содержит различия между двумя версиями.
Из молекулярной биологии (выравнивание последовательностей ДНК) я знаю, что вы могли бы сдвинуть два файла, пока различия не станут самыми маленькими:
do not use horses. attack at dawn.
maybe you could use horses. attack at dawn.
... выровняется в:
do not use horses. attack at dawn.
maybe you could use horses. attack at dawn.
.. .which дает вам содержимое файла патча / различий:
-{do not} +{maybe you could}
Но это требует больших вычислительных затрат для сдвига одного файла, размером в несколько гигабайт, байта за байтом, пока вы не найдете лучшее выравнивание. Итак, как rdiff или rsyn c эффективно обнаруживают наибольшее соглашение между двумя файлами и оттуда работают для создания достаточно небольшого файла diff?