Gzip diretórios muitas vezes no trabalho. O que eu normalmente faço é
tar -zcvf file.tar.gz /path/to/directory
Existe uma maneira de especificar o nível de compactação aqui? Eu quero usar a melhor compactação possível, mesmo que demore mais tempo para compactar.
linux
compression
tar
gzip
lazer
fonte
fonte
top
e vê-lo usando algo entre 200% -400 $ CPU.GZIP_OPT
, o uso deve ser o mesmo.Em vez de usar o sinalizador gzip para tar, gzip os arquivos manualmente após o processo tar, você pode especificar o nível de compactação do programa gzip:
Ou você pode usar:
O -9 na linha de comando gzip diz ao gzip para usar o nível máximo de compactação possível (o padrão é -6).
Edit: Corrigida a linha de comando do pipe com base no comentário @depesz.
fonte
tar cvf - /path/to/directory | gzip -9 - > file.tar.gz
file.tar
, poisgzip
adiciona a extensão ".gz".f -
? Se não houver nenhum arquivo, então é stdin / outAs versões modernas do tar suportam o formato de arquivo xz (tar GNU, desde 1,22 em 2009, Busybox desde 1,17.0, em 2010).
É baseado no lzma2 , como uma versão 7-Zip do gz . Isso proporciona uma melhor compactação se você estiver de acordo com o requisito de precisar do suporte ao xz.
Eu acabei de descobrir aqui (basicamente um truque dessa pergunta, mas no Unix stackexchange) que também há uma variável de ambiente XZ_OPT = -9 para controlar o nível de compactação XZ semelhante ao GZIP no outro post.
fonte
Esta é a segunda solução da Matrix Mole, mas ligeiramente reduzida:
Ao chamar o tar, a opção
f
indica que a saída é um arquivo. A configuração para-
(stdout) faz com que o tar grave sua saída para stdout, que é o comportamento padrão sem os doisf
e-
.E como declarado na
gzip
página de manual, se nenhum arquivo for especificado, o gzip será compactado a partir da entrada padrão. Não há necessidade-
nagzip
ligação.A opção
--best
(equivalente a-9
) define o nível de compactação mais alto.fonte
xz
epixz
também. É uma ótima maneira de controlar o número de threads usados para compactação paralela sem precisar criar um arquivo .tar intermediário. Como assimtar -cv /path/to/dir | pixz -p4 > output.tpxz
Há também a opção de especificar o programa de compactação usando -I. Isso pode incluir a opção de nível de compactação.
fonte
-I
arg, elas tentam tratar a coisa toda como um nome de programa para exec e, portanto, falham. Pelo menos a partir do tar 1.29 no Debian Stretch, isso funciona.E, claro, o tar derivado do macOS bsd deve ser diferente:
fonte