
Как здесь установить уровень сжатия?
nice -n 19 tar -czf $out $in
решение1
nice
не повлияет на уровень сжатия. Это повлияет только на планирование процесса ядром. Все команды ниже могут иметь префикс , чтобы nice
запустить их на другом уровне "хорошо", это не повлияет на уровень сжатия, а только на время, необходимое для выполнения действия (если система находится под большой нагрузкой).
Если вы используете GNU tar
, то программу сжатия можно настроить с помощью опций -I
или --use-compress-program
:
$ tar -I "gzip --best" -c -f archive.tar.gz dir
или
$ tar --use-compress-program="gzip --best" -c -f archive.tar.gz dir
Обратите внимание, что эту -z
опцию не следует использовать, если вы явно задали программу сжатия.
В руководстве GNU tar
указано, что используемая программа должна поддерживать -d
опцию распаковки (если вы используете эти опции для распаковки сжатого архива), что gzip
и происходит.
Насколько я знаю , в BSD tar
невозможно указать уровень сжатия подобным образом.
Другой способ добиться этого — очевидно создать несжатый архив, а затем сжать его нужным вам способом:
$ tar -c -f archive.tar dir
$ gzip --best archive.tar
или
$ tar -c dir | gzip --best -o archive.tar.gz
Ещедругойспособ — установить GZIP
переменную окружения в соответствии с флагами, которые вы хотите передать gzip
:
$ export GZIP='--best'
$ tar -c -z -f archive.tar.gz dir
За исключением использования -I
и --use-compress-program
, последние несколько альтернатив работают как с GNU, так и с BSD tar
.