Зазвичай ні gzip, ні tar не можуть створити "найменший tar.gz". Існує багато утиліт стиснення, які можуть стискати формат gz. Я написав скрипт bash " gz99 ", щоб спробувати gzip
, 7z
і advdef
отримати найменший файл. Щоб використовувати це для створення найменшого можливого запуску файлу:
tar c path/to/data | gz99 file.gz
advdef
Утиліта від AdvanceCOMP зазвичай дає найменший розмір, а й глючить (то gz99
перевірки корисності , що він не пошкоджений файл , перш ніж прийняти вихід advdef
). Щоб advdef
безпосередньо користуватися, створіть file.tar.gz, проте ви хочете. Потім запустіть:
advdef -z -4 file.tar.gz
Це створить стандартний файл gz, який можна зчитувати за допомогою gzip та tar як звичайний, лише трохи менше. Це про найкраще, що ви можете зробити з форматом gz.
Оскільки ви нещодавно дізналися, що смола може стискатися, і не сказали, чому ви хочете найменший файл ".tar.gz", можливо, ви не знаєте, що для файлів tar, таких як xz, можна використовувати більш ефективні формати. Як правило, перемикання на інший формат може значно покращити стиснення, ніж обертання з параметрами gzip. Основним недоліком xz є те, що він не настільки поширений, як gzip, тому люди, яким ви надсилаєте файл, можливо, повинні встановити новий пакет. Він також має тенденцію бути трохи повільніше, особливо при стисканні. Якщо це для вас не має значення, і ви дійсно хочете найменший файл tar, спробуйте:
tar cv path/to/data | xz -9 > file.tar.xz
Сучасні версії tar, наприклад на Ubuntu 13.10, автоматично виявляють стислі файли. Тож навіть якщо ви використовуєте компресію xz, ви все одно можете розпакувати, як завжди:
tar xvf file.tar.xz
Щоб швидко зрозуміти, як порівнюють ці утиліти стиснення, розглянемо ефект стиснення патча-3.1.1 з ядра Linux:
utility cpu format size(bytes)
gzip -9 0.02s gz 105,628
advdef -2 0.07s gz 102,619
7z -mx=9 -tgzip 0.42s gz 102,297
advdef -3 0.55s gz 102,290
advdef -4 0.75s gz 101,956
xz -9 0.03s xz 91,064
xz -3e 0.15s xz 90,996
У цьому тривіальному прикладі ми бачимо, що для отримання найменшого гц нам потрібен advdef (хоча 7z -tgzip майже такий же гарний і набагато менше баггі). Ми також бачимо, що перемикання на xz отримує нам набагато більше місця, ніж намагання максимально вичавити зі старого формату gz, не стикаючи занадто довго.