10

У меня есть два образа раздела (A и B), и я хочу использовать их для создания патча, который я могу применить к A на другом компьютере, чтобы получить новый образ B без затопления сети. У меня есть следующие требования:

  • работает на Linux
  • может создавать различия
  • можно использовать diffs для исправления файлов
  • может обрабатывать двоичные файлы
  • может обрабатывать большие файлы (несколько сотен ГБ должно работать)
  • взаимодействие с пользователем не требуется (только консольное приложение)
  • в идеале, должен иметь возможность чтения / записи в каналы (чтобы я мог передать в него из сжатого gzip файла и записать в один)

Существует ли что-то подобное?

3 ответа3

12

Вероятно, вам стоит взглянуть на инструменты, связанные с rsync: rdiff и rdiff-backup. Команда rdiff позволяет вам создать файл патча и применить его к другому файлу.

Команда rdiff-backup использует этот подход для работы со всеми каталогами, но я предполагаю, что вы работаете с однофайловыми образами дисков, так что именно rdiff будет использовать.

7

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

bsdiff - это еще один вариант, но он очень требователен к оперативной памяти и совершенно не подходит для любого размера образа диска.

bsdiff довольно жаждет памяти. Требуется max(17*n,9*n+m)+O(1) байт памяти, где n - размер старого файла, а m - размер нового файла. bspatch требует n+m+O(1) байтов.

1

JDIFF - это программа, которая выводит различия между двумя (двоичными) файлами.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .