На этот вопрос уже есть ответ здесь:
Как я понимаю, использование tar + gzip заключается в том, что tar
обычно он используется для объединения группы файлов в один файл, а затем gzip
используется для сжатия этого файла.
Я недавно узнал, что tar
можно также сжимать.
Поскольку я не до конца понимаю, как работает сжатие @ это ядро, у меня есть (возможно, нелепые) опасения, что отправка предварительно сжатого .tar в gzip может помешать сжатию gzip, а также его возможному разрешению и тому подобному.
По сути, мой вопрос: какую комбинацию методов args / сжатие я должен использовать для создания абсолютного наименьшего tar.gz, и как для этого выглядит выражение командной строки?
command-line
compression
gzip
tar
Марио Зильотто
источник
источник
Ответы:
Или вы можете указать tar пользователю максимальное сжатие следующим образом:
Кроме того, чтобы ваши envvars были свободными от помех, вы можете сделать это:
источник
Как вы сказали, « tar может также сжимать », это означает, что -
tar
не всегда сжимает данные сам по себе.Это делается только при использовании с
z
опцией. Это тоже не само по себе, но - путем передачи данных через gzip.Однако вместо этого, как отмечено в этом ответе, вы можете направить две команды:
tar
& такgzip
, чтобы вы могли явно указать уровень сжатия дляgzip
команды, чтобы получить наименьший выходной размер.Здесь
9
указывается максимально возможный уровень сжатия.источник
tar -cvf /path
Обычно ни gzip, ни tar не могут создать «самый маленький tar.gz». Есть много утилит сжатия, которые могут сжимать до формата gz. Я написал Баш скрипт « gz99 » , чтобы попробовать
gzip
,7z
и ,advdef
чтобы получить файл наименьшего. Чтобы использовать это для создания наименьшего возможного запуска файла:advdef
Утилита от AdvanceCOMP обычно дает наименьший размер, но и глючит (тоgz99
утилита проверяет , что он не поврежден файл , прежде чем принять выходadvdef
). Дляadvdef
непосредственного использования создайте файл .tar.gz так, как вам хочется. Затем запустите:Это создаст стандартный файл gz, который может быть прочитан gzip и tar как обычно, чуть меньше. Это лучшее из того, что вы можете сделать с форматом gz.
Поскольку вы только недавно узнали, что tar может сжимать, и не сказали, зачем вам нужен самый маленький файл ".tar.gz", вы можете не знать, что есть более эффективные форматы, которые можно использовать с файлами tar, например, xz. Как правило, переключение на другой формат может дать намного лучшее улучшение сжатия, чем перебор с опциями gzip. Основным недостатком xz является то, что он не так распространен, как gzip, поэтому людям, которым вы отправляете файл, возможно, придется установить новый пакет. Это также имеет тенденцию быть немного медленнее, особенно при сжатии. Если это не имеет значения для вас, и вы действительно хотите самый маленький файл tar, попробуйте:
Современные версии tar, например в Ubuntu 13.10, автоматически обнаруживают сжатые файлы. Так что даже если вы используете сжатие xz, вы все равно можете распаковать как обычно:
Чтобы быстро понять, как сравниваются эти утилиты сжатия, рассмотрим эффект сжатия patch-3.1.1 из ядра Linux:
В этом тривиальном примере мы видим, что для получения наименьшего gz нам нужен advdef (хотя 7z -tgzip почти так же хорош и намного менее глючит). Мы также видим, что переключение на xz дает нам гораздо больше места, чем попытка выжать максимум из старого формата gz без сжатия, которое занимает слишком много времени.
источник
xz -9
обычно требуется примерно 5-кратноеgz -9
время, а не только 1,5- кратное ваш стол подсказывает.gzip
Параметр--best
(эквивалентный-9
) запрашивает самый высокий уровень сжатия.источник
--best
флаг: -9 сбивает читателя с толку.