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