У меня есть сотни похожих больших файлов (30 мегабайт каждый), которые я хочу сжать. Каждая пара файлов содержит 99% одинаковых данных (разница менее 1%), поэтому я ожидаю, что у меня будет архив не более 40-50 мегабайт.
Один файл может быть сжат от 30 МБ до 13-15 МБ (с xz -1 , gz -1 , bzip2 -1), но при сжатии двух или более файлов я хочу иметь архив размером 13-15MB + N*0.3MB где N - количество файлов.
При использовании tar (для создания сплошного архива) и xz -6 (для определения словаря сжатия больше одного файла - Обновить - этого было недостаточно!), У меня все еще остается архив с размером N*13MB .
Я думаю, что и gzip и bzip2 мне не помогут, потому что у них словарь меньше 1 МБ, а мой поток tar повторяется каждые 30 МБ.
Как мне заархивировать мою проблему в современном Linux, используя стандартные инструменты?
Можно ли настроить xz для быстрого сжатия, но использовать словарь размером более 30-60 МБ?
Обновление: сделал трюк с tar c input_directory | xz --lzma2=dict=128M,mode=fast,mf=hc4 --memory=2G > compressed.tar.xz . Не уверен в необходимости параметров mf=hc4 и --memory=2G ; но dict=128M устанавливает словарь достаточно большим (больше, чем один файл), а mode=fast делает процесс немного быстрее, чем -e .
