Por que a melhor maneira de usar o bzip2 e o gzip paralelos por padrão?

37

O Bzip2 e o gzip usam apenas um núcleo, embora muitos computadores tenham mais de um núcleo. Mas existem programas como lbzip2, pbzip2 e pigz, que usam todos os núcleos disponíveis e prometem ser compatíveis com o bzip2 e o gzip.

Então, qual é a melhor maneira de usar esses programas por padrão, para que tar cfa file.tar.bz2 directory use lbzip2 / pbzip2 em vez de bzip2? Claro que não quero quebrar nada.

    
por elmicha 22.09.2011 / 23:08

5 respostas

30

Você pode linkar simbolicamente bzip2, bunzip2 e bzcat para lbzip2 e gzip, gunzip, gzcat e zcat para pigz:

sudo apt-get install lbzip2 pigz
cd /usr/local/bin
ln -s /usr/bin/lbzip2 bzip2
ln -s /usr/bin/lbzip2 bunzip2
ln -s /usr/bin/lbzip2 bzcat
ln -s /usr/bin/pigz gzip
ln -s /usr/bin/pigz gunzip
ln -s /usr/bin/pigz gzcat
ln -s /usr/bin/pigz zcat

Eu escolhi lbzip2 em vez de pbzip2 porque o /usr/share/doc/lbzip2/README.gz parece "mais bonito" que /usr/share/doc/pbzip2/README.gz. Além disso, o manual do alcatrão fala sobre o lbzip2 .

Editar:

O

pigz-2.1.6, que está incluído no Precise Pangolin, se recusa a descompactar arquivos com sufixos desconhecidos (por exemplo, initramfs - *. img). Isto é fixado em pigz-2.2.4, que vem com o Quantal. Então você pode querer esperar até o Quantal, instalar o pacote Quantal manualmente, ou não ligar gunzip / gzcat / zcat ainda.

    
por elmicha 22.09.2011 / 23:08
30

A ideia de link simbólico é realmente boa.
Outra solução de trabalho é alias tar :

alias tar='tar --use-compress-program=pbzip2'

ou respectivamente

alias tar='tar --use-compress-program=pigz'

Cria outro tipo de padrão.

    
por Bastian Ebeling 27.09.2011 / 09:45
13

A resposta do link simbólico está realmente incorreta. Ele substituiria o padrão gzip (ou bzip2) por pigz (ou pbzip2) para todo o sistema. Embora as implementações paralelas sejam notavelmente semelhantes às versões de processo único, as diferenças sutis nas opções de linha de comando podem interromper os processos do sistema principal que dependem dessas diferenças.

A opção "- use-compress-program" é uma opção muito melhor. Uma segunda opção (muito parecida com o alias) seria definir a variável de ambiente TAR_OPTIONS suportada pelo tar GNU:

$ export TAR_OPTIONS="--use-compress-program=pbzip2"
$ tar czf myfile.tar.bz2 mysubdir/
    
por user154053 30.04.2013 / 15:06
2

Uma opção fascinante é recompilar o tar para usar o multithread por padrão. Copiado de esta resposta do stackoverflow

Recompilando com substituição

Se você construir tar a partir de fontes, então você pode recompilar com parâmetros

--with-gzip=pigz
--with-bzip2=lbzip2
--with-lzip=plzip

Depois de recompilar o tar com essas opções, você pode verificar a saída da ajuda do tar:

$ tar --help | grep "lbzip2\|plzip\|pigz"
  -j, --bzip2                filter the archive through lbzip2
      --lzip                 filter the archive through plzip
  -z, --gzip, --gunzip, --ungzip   filter the archive through pigz
    
por Tom Koch 05.05.2016 / 15:36
-2

Use em seu ~ / .bash_aliases:

alias gzip="pigz"
alias gunzip="unpigz"
    
por foo bar 11.12.2014 / 09:21

Tags