DEV Community

Everton Tenorio
Everton Tenorio

Posted on

explainshell, xz, gzip e tar - Compressão de dados no Linux

No inicio desse mês de abril, boa parte da turma de tecnologia soube da notícia do nosso amigo Andres Freud que salvou o mundo ao descobrir código malicioso nas últimas versões do xz utils - CVE-2024-3094.

Aos usuários Linux, em especial novatos, apresento este algoritmo de compressão e como utilizá-lo com tar.

Mas antes de soltar tudo que é comando, recomendo entender detalhes dos comandos aqui utilizados acessando o site explainshell.com.

explainshell.com

explainshell
É um site que analisa comandos Unix e Linux. Ele desmembra cada parte do comando e explica com detalhes o que cada parte faz, fornecendo descrição dos argumentos, opções e operações do comando. É uma excelente ferramenta de consulta para compreender e aprender sobre o funcionamento desses comandos.


Compressão de dados

Segundo o material do Linux Essentials da LPI, a compressão é usada para reduzir a quantidade de espaço que um conjunto específico de dados consome. Em geral, recorremos a ela para reduzir a quantidade de espaço necessária para armazenar um arquivo.


xz

xz é um utilitário de compactação de dados de alta taxa de compressão, que geralmente é usado em sistemas Unix e Linux para compactar arquivos e economizar espaço em disco. Ele utiliza o algoritmo LZMA2 para compressão, que é conhecido por sua eficiência em termos de taxa de compressão.

Comparando com o gz o xz tem maior uso de memória.

Compactando

xz meu_arquivo 

# A opção -k mantém o arquivo original intacto
xz -k meu_arquivo
Enter fullscreen mode Exit fullscreen mode

Descompactando

xz -d meu_arquivo

# A opção -d mantém o arquivo compactado original
xz -dk meu_arquivo

# ou 
unxz meu_arquivo
Enter fullscreen mode Exit fullscreen mode

Níveis de compressão

O xz oferece diferentes níveis de compressão, que variam de 0 a 9, sendo 0 o nível de compressão mais rápido, mas com menor taxa de compressão, e 9 o mais lento, mas com a maior taxa de compressão. O nível de compressão padrão é 6.

xz -9 meu_arquivo 
Enter fullscreen mode Exit fullscreen mode

Tar (Tape archive)

O Tar não é um utilitário de compressão por si só, ele apenas agrupa arquivos em um único arquivo, sem comprimi-los. Para compactar arquivos usando tar é necessário combiná-lo com utilitários de compressão como xz e gzip.

Uma boa vantagem em usar o tar é a preservação dos metadados, isto é, preservar as permissões de arquivos e timestamps por exemplo.

Sysadmins usam o tar para criar backups de arquivos e diretórios. Esses backups podem ser usados para restaurar sistemas em caso de falha ou para migrar dados para outro servidor.

Desenvolvedores frequentemente empacotam seus aplicativos e bibliotecas em arquivos tar para distribuição. Isso é comum em projetos de software de código aberto, onde fornecem uma versão compactada do código-fonte para facilitar o download e a instalação.


Criar um arquivo tar com algortimo de compressão [.xz, .gz]

tar com xz: meu_arquivo.tar.xz

tar com gz: meu_arquivo.tar.gz

O que acontece primeiro é o processo de empacotamento dos arquivos no formato .tar e depois a compactação no formato do algoritmo de compressão utilizado.
A seguir como compactar, descompactar e listar

Compactar, Descompactar e Listar

xz

# Compactar
tar -cJvf meus_pdfs.tar.xz meus_pdfs/
# ou compactar usando nível de compressão
tar -cf - *.pdf | xz -7 > meus_pdfs.tar.xz

# Descompactar
tar -xJvf meus_pdfs.tar.xz
# ou 
tar -xJvf meus_pdfs.tar.xz -C diretorio_novo/

# Listar arquivos
tar -tJvf meus_pdfs.tar.xz
Enter fullscreen mode Exit fullscreen mode

gzip

# Compactar
tar -czvf meus_pdfs.tar.gz meus_pdfs/

# Descompactar
tar -xvzf meus_pdfs.tar.gz

# Listar arquivos
tar -tvf meus_pdfs.tar.gz
Enter fullscreen mode Exit fullscreen mode

Essa postagem pode servir como um guia para uso dos comandos que permitem compressão de dados no Linux, lembre-se de consultar sobre os comandos no manual (man) ou no explainshell.

Top comments (0)