Удаленное дифференциальное сжатие


Удаленное дифференциальное сжатие ( RDC ) — это алгоритм синхронизации клиент-сервер, который позволяет синхронизировать содержимое двух файлов, сообщая только о различиях между ними. Он был представлен с Microsoft Windows Server 2003 R2, включен в более поздние клиентские и серверные операционные системы Windows, но к 2019 году не разрабатывается и не используется ни в одном продукте Microsoft.

В отличие от двоичного дельта-сжатия (BDC), которое предназначено для работы только с известными версиями одного файла, RDC не делает предположений о сходстве файлов или версиях. Различия между файлами вычисляются «на лету», поэтому RDC подходит для эффективной синхронизации файлов, которые были обновлены независимо друг от друга, когда пропускная способность сети мала или файлы большие, а различия между ними небольшие.

Используемый алгоритм основан на снятии отпечатков блоков в каждом файле локально на обоих концах партнеров по репликации. Поскольку многие типы изменений файлов могут привести к перемещению содержимого файла без других существенных изменений (например, небольшая вставка или удаление в начале файла может привести к смещению остальной части файла по отношению к исходному содержимому), используемые блоки для сравнения основаны не на статических произвольных точках среза, а на точках среза, определяемых содержимым каждого сегмента файла. Это означает, что если часть файла изменяется по длине или блоки содержимого перемещаются в другие части файла, границы блоков для частей, которые не изменились, остаются фиксированными относительно содержимого, и, таким образом, серия отпечатков пальцев ибо эти блоки не меняются, они просто меняют положение. Сравнивая все хэши в файле с хэшами того же файла на другом конце пары репликации, RDC может определить, какие блоки файла изменились, а какие нет, даже если содержимое файла значительно изменилось. перетасован. Поскольку для сравнения больших файлов может потребоваться большое количество сравнений сигнатур, алгоритм рекурсивно применяется к наборам хэшей, чтобы определить, какие блоки хэшей были изменены или перемещены, что значительно уменьшает объем данных, которые необходимо передать для сравнения файлов.

Более поздние версии Windows поддерживают кросс-файловый RDC, который находит файлы, похожие на реплицируемый, и использует блоки подобных файлов, идентичных реплицируемому файлу, чтобы свести к минимуму объем данных, передаваемых по глобальной сети. Кросс-файловый RDC может использовать блоки до пяти одинаковых файлов. [1]

RDC во многом похож на более старый (1996 г.) протокол rsync , но с некоторыми полезными нововведениями, в частности, с рекурсивным алгоритмом и межфайловым RDC. [2]

RDC реализуется в операционных системах Windows с помощью DLL - файла MSRDC.DLL, который будет находиться в каталоге %SYSTEMROOT%\System32 тогда и только тогда, когда RDC включен. Доступно очень мало программного обеспечения, которое его использует, особенно в несерверных системах. Согласно интернет-слухам, включение RDC значительно замедляет локальную передачу файлов, и его не следует включать; веб -страница Microsoft TechNet очень подробно оспаривает это, [3] несмотря на частые анекдотические сообщения о том, что его удаление помогло восстановить скорость передачи. [ нужна ссылка ]