Esta pergunta já tem uma resposta aqui:
A maneira como entendo o uso do tar + gzip é que tar
normalmente é usado para consolidar um agrupamento de arquivos em um único arquivo e depois gzip
é usado para compactar esse arquivo.
Eu aprendi recentemente que tar
também pode comprimir.
Como eu não entendo completamente como a compactação funciona no núcleo, tenho preocupações (possivelmente ridículas) de que o envio de um .tar pré-compactado para o gzip possa impedir a compactação do gzip, assim como seu potencial permitiria e coisas dessa natureza.
Minha pergunta é essencialmente: que combinação de métodos args / compressão devo usar para criar o menor absoluto tar.gz e como é a declaração da linha de comando?
command-line
compression
gzip
tar
Mario Zigliotto
fonte
fonte
Respostas:
Ou, você pode dizer ao tar para a compressão máxima do usuário desta maneira:
Além disso, para manter seus envvars desorganizados, você pode fazer o seguinte:
fonte
Como você declarou - "o tar também pode comprimir ", implica que -
tar
nem sempre comprime os dados por si só.Faz isso apenas quando usado com a
z
opção Isso também não por si só, mas - passando os dados tarredados pelo gzip.No entanto, em vez disso, conforme observado nesta resposta, você pode canalizar os dois comandos:
tar
& paragzip
que você possa especificar explicitamente o nível de compactação dogzip
comando para obter o menor tamanho de saída.Aqui
9
especifica o nível máximo de compactação possível.fonte
tar -cvf /path
Normalmente, nem gzip nem tar podem criar "o menor absoluto tar.gz". Existem muitos utilitários de compactação que podem ser compactados no formato gz. Eu escrevi um script " gz99 " para tentar
gzip
,7z
eadvdef
para obter o menor arquivo. Para usar isso para criar o menor arquivo possível, execute:O
advdef
utilitário do AdvanceCOMP geralmente fornece o arquivo menor, mas também é com erros (ogz99
utilitário verifica se não corrompeu o arquivo antes de aceitar a saída deadvdef
). Para usaradvdef
diretamente, crie file.tar.gz como quiser. Então corra:Isso criará um arquivo gz padrão que pode ser lido pelo gzip e tar normalmente, apenas um pouquinho menor. É o melhor que você pode fazer com o formato gz.
Como você aprendeu recentemente que o tar pode compactar e não disse por que deseja o menor arquivo ".tar.gz", talvez não saiba que existem formatos mais eficientes que podem ser usados com arquivos tar, como o xz. Geralmente, mudar para um formato diferente pode proporcionar uma melhoria muito melhor na compactação do que brincar com as opções gzip. A principal desvantagem do xz é que ele não é tão comum quanto o gzip; portanto, as pessoas para quem você envia o arquivo precisam instalar um novo pacote. Também tende a ser um pouco mais lento, principalmente ao comprimir. Se isso não lhe interessa e você realmente deseja o menor arquivo tar, tente:
Versões modernas do tar, por exemplo, no Ubuntu 13.10, detectam automaticamente arquivos compactados. Portanto, mesmo se você usar a compactação xz, ainda poderá descompactar como de costume:
Para ter uma idéia rápida de como esses utilitários de compactação se comparam, considere o efeito de compactar o patch-3.1.1 no kernel do linux:
Neste exemplo trivial, vemos que, para obter o menor gz, precisamos do advdef (embora 7z -tgzip seja quase tão bom e muito menos bugs). Também vemos que mudar para xz nos dá muito mais espaço do que tentar extrair o máximo do antigo formato gz, sem que a compactação demore muito.
fonte
xz -9
geralmente leva algo como 5x ogz -9
tempo, e não apenas 1,5x sua mesa sugere.gzip
A opção--best
(equivalente a-9
) solicita o nível mais alto de compactação.fonte
--best
sinalizador: -9 é confuso para o leitor.