Я очень часто гзип каталоги на работе. Что я обычно делаю
tar -zcvf file.tar.gz /path/to/directory
Есть ли способ указать уровень сжатия здесь? Я хочу использовать максимально возможное сжатие, даже если для его сжатия требуется больше времени.
linux
compression
tar
gzip
Lazer
источник
источник
top
и видеть его, используя где-то между 200% -400 $ процессора.GZIP_OPT
такая же, как и при использовании.Вместо использования флага gzip для tar, gzip файлы вручную после процесса tar, затем вы можете указать уровень сжатия для программы gzip:
Или вы можете использовать:
-9 в командной строке gzip указывает gzip использовать максимально возможный уровень сжатия (по умолчанию -6).
Редактировать: Исправлена ошибка командной строки на основе комментария @depesz.
источник
tar cvf - /path/to/directory | gzip -9 - > file.tar.gz
file.tar
, так какgzip
добавляет расширение .gz.f -
? если файла нет, то это stdin / outСовременные версии tar поддерживают формат архива xz (GNU tar, начиная с версии 1.22 в 2009 году, Busybox начиная с версии 1.17.0 в 2010 году).
Он основан на lzma2 , вроде 7-Zip версии gz . Это дает лучшее сжатие, если вы согласны с требованием поддержки xz.
Я только что обнаружил здесь (в основном, обман этого вопроса, но в стек-обмене Unix), что есть также переменная окружения XZ_OPT = -9 для управления уровнем сжатия XZ, аналогичным GZIP в другом посте.
источник
Это второе решение Matrix Mole, но немного сокращенное:
При вызове tar опция
f
указывает, что вывод является файлом. Установка его в-
(stdout) заставляет tar записывать свой вывод в stdout, который является поведением по умолчанию без обоихf
и-
.И как указано в
gzip
справочной странице, если файлы не указаны, gzip будет сжиматься из стандартного ввода. Там нет необходимости-
вgzip
вызове.Опция
--best
(эквивалентная-9
) устанавливает самый высокий уровень сжатия.источник
xz
иpixz
тоже. Это отличный способ контролировать количество потоков, используемых для параллельного сжатия, без необходимости создавать промежуточный файл .tar.tar -cv /path/to/dir | pixz -p4 > output.tpxz
Существует также возможность указать программу сжатия, используя -I. Это может включать в себя параметр уровня сжатия.
источник
-I
arg, они будут пытаться рассматривать все это как имя программы для exec и, таким образом, потерпят неудачу. По крайней мере, начиная с tar 1.29 в Debian Stretch, это работает.И, конечно же, tar-файл macOS bsd должен быть другим:
источник