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.

Justin
fonte
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 -

TimS
fonte
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!

anônimo
fonte
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 -
Tim Hughes
fonte