Большой бинарный файл с разрешительной лицензией

Я ищу нативную библиотеку или, возможно, относительно простой алгоритм для создания и применения бинарных исправлений для файлов размером до 1 ГБ. Это экспорт двоичных баз данных, и, к сожалению, нет другого способа получить только изменения. Заплаты не должны быть очень маленькими; важнее скорость и эффективность использования пространства (нет bsdiff). Файлы часто имеют менее 1% изменений, и я уже был бы удовлетворен патчем в десять раз больше.

Конечно, уже есть немало вопросов по этому поводу, но мое самое большое ограничение на данный момент заключается в том, что мне нужно, чтобы это был открытый исходный код с разрешительной лицензией (ничего GPL'овского). По этой причине, хотя я очень доволен его характеристиками, xdelta3 не вариант, ни rdiff,

Один подход, который я нашел, работает достаточно хорошо - не экспортировать, а взять сам файл базы данных и разбить его на куски. Затем менее 20% из них меняются между двумя версиями. К сожалению, резервные копии должны быть взяты с базой данных онлайн, что связывает меня с экспортом. И тогда это уже не так хорошо работает.

0 ответов

HDiffPatch: https://github.com/sisong/HDiffPatch
Лицензия MIT, может работать на: windows,macos,linux,android ...
поддержка различий между большими двоичными файлами или каталогами;
diff и patch оба поддерживают запуск с ограничением памяти;
Создание патча:hdiffz -s-1k -c-zlib old_path new_path out_delta_file
(-s для скорости, -m для deltaSize)
Применение патча:hpatchz old_path delta_file out_new_path

Другие вопросы по тегам