Короче мне делать нехуя буду писать свой архиватор для похожих файлов.
Алгоритм такой: первым прогоном создаём словарь блоков, но не прям целых блоков а голов и хвостов блоков и ищем в потоке предыдущие встреченые блоки, то есть создаём статистику вероятных совпадений, потом по этой статистике разбиваем всю пачку файлов на родственные группы. Вторым прогоном каждую родственную группу пакуем дедуплицируя блоки (с помощью статистики по все офсетам) дефлейтом, пока пакуем придётся полный словарь создать (в этом месте я сосу), выгружаем из памяти полный словарь, пакуем следующую группу. Короч главная проблема - как не съесть всю память. Ещё можно не выёбываться и просто дельты паковать. Надо ещё про PPMd почитать, может это оно и есть.