Se você já teve que compactar grandes volumes com tar, você saberá o quanto isso pode ser doloroso. Muitas vezes vai muito devagar, e você se pega acertando Ctrl + C para terminar a tarefa e simplesmente esquecê-la. No entanto, existem algumas outras ferramentas que o tar pode usar e são uma ótima maneira de usar as atuais CPUs com muitos threads e acelerar o arquivamento do tar. Este artigo mostra como fazer o tar usar todos os núcleos ao compactar arquivos no Linux.
Compreendendo e instalando as ferramentas
As três ferramentas principais em questão aqui são pigz, pbzip2 e pxz. Existem algumas diferenças sutis entre as ferramentas, mas as diferenças estão entre gzip, bzip2 e xz. Nessa respectiva ordem, os níveis de compactação aumentam, o que significa que um arquivo compactado com gzip será maior do que um compactado com xz, mas gzip naturalmente levará menos tempo do que xz. bzip2 está em algum lugar no meio.
O “p” que inicia os nomes de cada uma das ferramentas significa “paralelo”. A paralelização é algo que se tornou cada vez mais relevante ao longo dos anos – como algo abrange todos os núcleos da CPU. Com CPUs como as linhas Epyc e Threadripper da AMD que podem atingir 64 núcleos e 128 threads, é importante entender quais aplicativos podem fazer uso disso. Essas funções de compressão são as principais candidatas.
Para instalar as ferramentas, basta recorrer aos seus repositórios.
sudo apt install pigz pbzip2 pxz # Debian/Ubuntu sudo dnf install pigz pbzip2 pxz # Fedora sudo pacman -Sy pigz pbzip2 pxz # Arch Linux
Este artigo se concentra no pxz por uma questão de consistência. Você pode verificar este tutorial para pigz.
Compactando arquivos com alcatrão
A sintaxe do tar é bastante simples. Para compactar apenas um diretório, você pode usar um comando como este:
tar czf linux-5.10-rc3.tar.gz linux/ tar cjf linux-5.10-rc3.tar.bz2 linux/ tar cJf linux-5.10-rc3.tar.xz linux/
O primeiro usará gzip, o segundo usará bzip2 e o terceiro usará xz. O nome do arquivo e o diretório irão variar dependendo do que você está fazendo, mas puxei o kernel do Linux do GitHub para o meu diretório “/ home” e irei usá-lo. Então, vou prosseguir e iniciar esse comando com o time comando na frente para ver quanto tempo leva. Você também pode ver que xz está listado como tendo a maior porcentagem da minha CPU neste sistema, mas está fixando apenas um núcleo em 100 por cento.


E, como você pode ver, levou muito tempo para que meu antigo i7-2600s compactasse o Linux 5.10-rc3 (cerca de 28 minutos).

É aqui que essas ferramentas de compressão paralela são úteis. Se você estiver compactando um arquivo grande e procurando fazer isso mais rápido, não posso recomendar essas ferramentas o suficiente.
Usando ferramentas de compressão paralela com alcatrão
Você pode dizer ao tar para usar um programa de compressão com o --use-compression-program opção, ou você pode usar um sinalizador de comando um pouco mais simples de -I. Um exemplo de sintaxe para qualquer uma dessas ferramentas seria assim:
tar -I pigz -cf linux-5.10-rc3.tar.gz linux/ tar -I pbzip2 -cf linux-5.10-rc3.tar.bz2 linux/ tar -I pxz -cf linux-5.10-rc3.tar.xz linux/
Vamos testar e ver quanto tempo meu sistema leva para compactar o kernel do Linux com acesso a todos os oito threads de minha CPU. Você pode ver meu htop leitura mostrando todos os tópicos fixados em 100 por cento de uso por causa do pxz.


Você pode ver que demorou muito menos tempo para compactar esse arquivo (cerca de sete minutos!), E isso com multitarefa. Tenho uma máquina virtual em execução em segundo plano e estou navegando na Web no momento. O agendador de hardware do kernel do Linux lhe dará o que você precisa para suas coisas pessoais, então se você deixou seu pxz comando para ser executado sem qualquer outra coisa em execução em seu sistema, você pode fazer isso mais rápido.

Ajustando os níveis de compressão com pigz, pbzip2 e pxz
Você também pode passar os níveis de compactação para pxz para tornar o arquivo ainda menor. Isso exigirá mais RAM, CPU e tempo, mas vale a pena se você realmente precisar obter um arquivo pequeno. Aqui está uma comparação dos dois comandos e seus resultados lado a lado.



A compressão não é muito maior e o tempo não vale necessariamente a pena, mas se cada megabyte conta, ainda é uma ótima opção.
Espero que tenha gostado deste guia sobre como usar todos os núcleos para compactar arquivos usando o tar. Certifique-se de verificar alguns de nossos outros conteúdos Linux, como como construir um novo PC para Linux, dominar o Apt e se tornar um guru do Apt, e como instalar o Arch Linux em um Raspberry Pi.
Apoie o nosso trabalho ❤️
Se você gostou deste artigo, considere deixar uma gorjeta para nos ajudar a continuar publicando conteúdo de qualidade.



















