Что-то вроде дайджеста сообщения, но он постепенно описывает файл - PullRequest
3 голосов
/ 17 февраля 2012

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

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

1 Ответ

3 голосов
/ 17 февраля 2012

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

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

...