У меня есть сотни похожих больших файлов (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 файлах из набора.