У меня есть сотни похожих больших файлов (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.
xz -1 --memory=2Gне помог, проверено на 2 и 4 файлах из набора.