Что-то вроде дайджеста сообщения, но это постепенно описывает файл

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

Вопрос

У меня есть набор географически удаленных узлов с разнородными операционными системами, которым необходимо передавать файлы и обновления с помощью Java-программы, которую я пишу.В настоящее время мне нужно отправить весь файл снова, если файл изменится.Есть ли способ определить разделы файлов, которые отличаются друг от друга, и отправлять только их (обратите внимание, что эти файлы не обязательно текстовые, они могут быть любого формата).Единственный способ, который я могу придумать, это разбить файл на блоки, хэшировать блоки и отправить хэши обратно запрашивающему, который затем запрашивает только нужные ему блоки, но для небольших блоков и больших файлов это большие накладные расходы, поэтому есть ли какой-нибудь способ отправить какое-нибудь сообщение с описанием моего файла, чтобы единственное сообщение можно было проанализировать и предоставить список блоков, которые необходимо передать?

Большинство функций дайджеста спроектированы таким образом, что небольшое изменение данных приводит к большому изменению всего хэш-вывода, мне в основном нужно обратное этому, которое будет работать во всех операционных системах.

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

Решение

Если я правильно понимаю ваш вопрос, вам необходимо синхронизировать файлы в двух системах.Существует инструмент под названием rsync который может синхронизировать два файла (или целые каталоги), отправляя только изменения, внесенные в файл.

Вас также может заинтересовать Алгоритм Rsync.

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