У мене є сотні подібних великих файлів (по 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 файлах із набору.