Двоичная разность/патч для больших файлов на Linux?

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

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

Чему-то нравится, которые существуют?

10
задан 28.09.2015, 12:00

0 ответов

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

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

12
ответ дан 07.12.2019, 12:42

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

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

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

7
ответ дан 07.12.2019, 12:42

Теги

Похожие вопросы