Что-то вроде дайджеста сообщения, но это постепенно описывает файл
-
27-10-2019 - |
Вопрос
У меня есть набор географически удаленных узлов с разнородными операционными системами, которым необходимо передавать файлы и обновления с помощью Java-программы, которую я пишу.В настоящее время мне нужно отправить весь файл снова, если файл изменится.Есть ли способ определить разделы файлов, которые отличаются друг от друга, и отправлять только их (обратите внимание, что эти файлы не обязательно текстовые, они могут быть любого формата).Единственный способ, который я могу придумать, это разбить файл на блоки, хэшировать блоки и отправить хэши обратно запрашивающему, который затем запрашивает только нужные ему блоки, но для небольших блоков и больших файлов это большие накладные расходы, поэтому есть ли какой-нибудь способ отправить какое-нибудь сообщение с описанием моего файла, чтобы единственное сообщение можно было проанализировать и предоставить список блоков, которые необходимо передать?
Большинство функций дайджеста спроектированы таким образом, что небольшое изменение данных приводит к большому изменению всего хэш-вывода, мне в основном нужно обратное этому, которое будет работать во всех операционных системах.
Решение
Если я правильно понимаю ваш вопрос, вам необходимо синхронизировать файлы в двух системах.Существует инструмент под названием rsync
который может синхронизировать два файла (или целые каталоги), отправляя только изменения, внесенные в файл.
Вас также может заинтересовать Алгоритм Rsync.