nice
não fará nada ao nível de compactação. Isso afetará apenas o agendamento do processo pelo kernel. Todos os comandos abaixo podem ser prefixados com nice
para executá-los em um nível "nice" diferente, ele não influenciará o nível de compactação, somente o tempo gasto para executar a ação (se o sistema estiver sob carga pesada).
Se você estiver usando o GNU tar
, o programa de compactação pode ser definido com as opções -I
ou --use-compress-program
:
$ tar -I "gzip --best" -c -f archive.tar.gz dir
ou
$ tar --use-compress-program="gzip --best" -c -f archive.tar.gz dir
Observe que a opção -z
não deve ser usada se você definir o programa de compactação explicitamente.
O manual GNU tar
informa que o programa usado deve suportar uma opção -d
para descompactação (se você usar essas opções para descompactar um arquivo compactado), o que gzip
faz.
Com BSD tar
, não é possível especificar o nível de compactação de maneira semelhante, até onde eu vi.
A outra maneira de conseguir isso é obviamente criar um arquivo não compactado e compactá-lo da maneira desejada:
$ tar -c -f archive.tar dir
$ gzip --best archive.tar
ou
$ tar -c dir | gzip --best -o archive.tar.gz
No entanto, outra maneira é definir a variável de ambiente GZIP
para os sinalizadores que você gostaria de passar para gzip
:
$ export GZIP='--best'
$ tar -c -z -f archive.tar.gz dir
Exceto pelo uso de -I
e --use-compress-program
, as últimas alternativas funcionam com GNU e BSD tar
.