Maneira mais rápida de extrair tar.gz


42

Existe uma maneira de extrair um arquivo tar.gz mais rápido do que tar -zxvf filenamehere?

Temos arquivos grandes e tentando otimizar a operação.


2
Você está achando que o $ tar -zxvfmétodo está vinculado a IO ou CPU?
EEAA

11
Acredite na CPU, como posso verificar?
Justin

5
Não diretamente relacionados, mas 'z' não foi exigida desde 2004 / tar v1.1.5 gnu.org/software/tar/#TOCreleases :)
JamesHannah

Respostas:


57

pigz é uma versão paralela do gzip. Embora ele use apenas um único thread para descompactação, ele inicia três threads adicionais para leitura, gravação e verificação de cálculo. Seus resultados podem variar, mas vimos uma melhoria significativa na descompactação de alguns de nossos conjuntos de dados. Depois de instalar o pigz, o arquivo tar pode ser extraído com:

pigz -dc target.tar.gz | tar xf -


11
+1. FWIW, você também pode escrever isso como tar -xvf --use-compress-program=pigz filenamehere. ( -zequivale a --use-compress-program=gzip.) Como alternativa, você pode até criar gzipum link simbólico pigze continuar usando -zxvf.
Ruakh

2
@ ruakh, eu tive que colocar -xfdepois --use-compress-program=pigz, ou eu tenho um erro. Por alguma razão, não foi mais rápido do que usar gzip.
jonderry

Pois bzip2existe pbzip2( ppara paralelo). tar --use-compress-program=pbzip2 -xvf file.tar.bz2.
alfC 22/09/2015

Existe uma maneira de usar o pvcomando para mostrar progresso, ou um equivalente, enquanto também usa a --use-compress-program=pigzbandeira? Durante a compactação, eu posso fazer gnutar --use-compress-program="pigz | pv" -cf target.tar.gz YourData, mas não sei como fazer isso durante a remoção / descompactação.
Stefan Lasiewski

13

se houver muitos arquivos pequenos na bola de tar, cancele o parâmetro 'v', tente novamente!


3
Eu nunca uso -v param. Não sei por que as pessoas precisam de tanto barulho no console.
Eimantas

9
@Eimantas Quando você descompacta algo que contém muitos arquivos de vários gigabytes, deseja alguma indicação de progresso. :)
Michael Hampton

@ TimHughes: é realmente bom saber, por favor poste como resposta separada!
SMCI

Michael Hampton, se você possui arquivos com vários gigabytes, mas misturado com grandes listas de arquivos pequenos, tem um bom motivo para não usar -v, nos meus testes locais, torna o tar muito lento, especialmente se você tiver o tar executando em um servidor remoto via terminal, o que eu faço é para assistir du -s diretório para que eu possa assistir o diretório crescendo ...
Luciano Andress Martini

Pode valer a pena usar --checkpoint=NUMBER( exibir mensagens de progresso a cada NUMBERth registro ) em vez de -v.
Stefan Lasiewski

6

Se você quiser ver o progresso, use algo parecido pv. Aqui está um exemplo:

pigz -dc mysql-binary-backup.tar.gz | pv | tar xf -
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.