Насколько я знаю, алгоритм в инструменте rsync будет нарезать файл и вычислять для каждого среза хеш. Поэтому я предполагаю, что существуют файлы, в которых алгоритм хэша будет перестраивать файл без фактической передачи меньшего количества данных. Я полагаю, что файл с только нулями будет хорошим кандидатом, верно?
1 ответ
Алгоритм rsync более сложный, чем этот. Хэши для кусочков файлов вычисляются для удаленного файла и передаются в локальный rsync. Локальный rsync использует эти хеши для поиска подходящих разделов файла в локальном файле, где бы они ни находились. Эти соответствующие разделы не передаются; Вместо этого отправляются токены, указывающие удаленному rsync, как воспроизводить эти разделы, и именно так rsync избегает передачи всего файла.
Таким образом, оптимальные файлы для rsync - это файлы с общими объемами данных, которые могут быть смещены путем вставок и удалений, например, сорта файлов, создаваемых типичными действиями редактора. Это неудивительно, поскольку, как писал автор rsync Эндрю Триджл в своей диссертации, он начал рассматривать алгоритм rsync, ожидая с нетерпением обновления исходных файлов программы по модемному каналу.