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.