fbpx Certificação Linux: Compressores de dados Linux (gzip, bzip e xz) [Guia Básico]

Blog

Compressores de dados Linux (gzip, bzip e xz) [Guia Básico]

📅 01/01/2019 ⏱ 6 min ✍️ Uira Ribeiro
Linuxcomandos
Compressores de dados Linux (gzip, bzip e xz) [Guia Básico]

Para uma maior eficiência e economia de mídias de backup, existe o recurso de compressão de dados.

Existem basicamente três Compressores de dados Linux com algoritmos de compressão de dados diferentes. O primeiro a surgir foi o GZIP, depois o BZIP2 e por último o XZ.

Compressor de dados gzip e gunzip

O primeiro compressor de dados muito utilizado é o gzip. Ele utiliza um algoritmo de compreensão chamado Lempel-Ziv. Esta técnica encontra caracteres duplicados nos dados de entrada. A segunda ocorrência dos caracteres é substituída por ponteiros para a referência anterior, na for­ma de pares de distância e comprimento. Ao compactar um arquivo, o gzip adiciona o sufixo .gz. 

Para compactar um arquivo:

$ gzip arquivo

Para descompactar um arquivo:

$ gzip –d arquivo.gz

Ou

$ gunzip arquivo.gz

Compressor de dados bzip2 e bunzip2

O compactador bzip2 compacta arquivos utilizando o algoritmo de Burrows-Wheeler e Huffman. Esta técnica opera em blocos de dados grandes. Quanto maior o tamanho dos blocos, maior a taxa de compressão atingida. Ele é considerado melhor que os compressores convencionais de dados. Ao compactar um arquivo, o bzip2 adiciona o sufixo .bz2. 

Para compactar um arquivo:

$ bzip2 arquivo

Para descompactar um arquivo:

$ bzip2 –d arquivo.bz2

Ou

$ bunzip2 arquivo.bz2

Existem alguns casos onde o arquivo compactado pode ficar maior que o arquivo original. Isto pode ocorrer se o algoritmo utilizado não encontrar ocorrências para fazer a compressão dos dados e o cabeçalho do compactador é adicionado ao arquivo original.

Compressor de dados xz e unxz

Ainda, temos o compressor de dados xz, que utiliza o algoritmo similar ao gzip. Ele produz arquivos com a extensão .xz ou .lzma.

Para compactar um arquivo:

$ xz arquivo

Para descompactar:

$ xz --decompress arquivo.xz 

Ou

$ unxz arquivo.xz

Para você ter uma ideia da diferença entre os três compactadores gzip, bzip2 e xz, veja o exemplo comparativo do pacote TAR de um arquivo de backup de um site:

site.tar        9,8M    # arquivo sem compactaçãosite.tar.gz     2,6M    # arquivo compactado com gzipsite.tar.bz2    2,4M    # arquivo compactado com bzipsite.tar.xz     2,1M    # arquivo compactado com xz 

Juntando Arquivos com tarball

Os arquivos tarball são empacotamentos de arquivos e diretórios que mantêm a estrutura de diretórios e arquivos original em um arquivo tar, com a possibilidade de compressão de dados.

O comando para empacotar arquivos e diretórios é o tar. O nome deste comando provém de “Tape-ARchive”. Ele lê arquivos e diretórios e salva em fita ou arquivo.

Juntamente com os dados, ele salva informações importantes como a última modificação, permissões de acesso e outros. Isso o torna capaz de restaurar o estado original dos dados.

As opções do comando tar não são tão opcionais assim. Ele recebe pelo menos dois argumentos:

  • opções:  Diz o que o tar deve fazer
  • [fonte]: Se o tar for utilizado para fazer backup, este parâmetro pode ser um arquivo, um dispositivo, um diretório a ser copiado;
  • [destino]: Se o comando for utilizado para backup, esta opção irá especificar o destino para os dados. Pode ser um arquivo tarball ou um dispositivo. Se for utilizado para restaurar os arquivos, ela irá especificar um arquivo tarball e um dispositivo de onde os dados serão extraídos.

Primeiro deve-se escolher o que tar deve fazer através das opções:

  • -c: Cria um novo arquivo .tar;
  • -u: Adiciona mais arquivos ao arquivo .tar somente se estes forem novos ou modificados;
  • -r: Adiciona os arquivos especificados no final do arquivo .tar;
  • -g: Cria um backup incremental;
  • -t: Lista o conteúdo de um arquivo .tar;
  • -x: Extrai os arquivos de arquivo .tar;

Ele ainda tem opções auxiliares:

  • -j: Utiliza o bzip2 para compactar e descompactar os arquivos .tar.bz2;
  • -J: Utiliza o xz para compactar e descompactar os arquivos .tar.xz
  • -z: Utiliza o gzip para compactar e descompactar os arquivos .tar.gz;
  • -v: Lista todos os arquivos processados;
  • -f: Indica que o destino é um arquivo em disco, e não uma unidade de fita magnética;

As opções do tar podem ser combinadas em um único parâmetro como "cvzf". 

Por ser um comando que originalmente foi feito para ler/gravar em fita, para criar um arquivamento tar ou ler um arquivamento tar em disco, deve-se sempre usar a opção "f".

Exemplos:

Para salvar um determinado diretório /var/lib/mysql em um no arquivo /var/backup/mysql.tar.gz:

$ tar cvzf /var/backup/mysql.tar.gz /var/mysql

Para extrair o mesmo pacote:

$ tar xvzf /var/backup/mysql.tar.gz –C / 

Você poderá abrir o conteúdo de um arquivo tarball de duas formas:

$ gzip –d arquivo.tar.gz

O comando gzip descomprime o arquivo.tar.gz e retira o sufixo .gz.

$ tar xvf arquivo.tar

O utilitário tar extrai o conteúdo do pacote.

Podemos também utilizar formas mais simples:

$ tar xvzf arquivo.tar.gz

Ou

$ gzip –dc arquivo.tar.gz | tar xv

Se o arquivo for compactado com o bzip2, ele deve ser descompactado pelo bunzip2 ou utilizar a opção –d do bzip2.

$ bzip2 –d arquivo.tar.bz2

Ou

$ bunzip2 arquivo.tar.bz2

E

$ tar xvf arquivo.tar

No caso dos arquivos compactados com xz, pode-se utilizad o comando xz:

$ xz -d linux.tar.xz

Seguido de:

$ tar xvf linux.tar

OU

$ tar xvJf linux.tar.xz

No ambiente gráfico, você pode descompactar e extrair um arquivo tarball sem muito esforço, apenas clicando no arquivo. Desta forma o Linux invocará em segundo plano o compactador de dados apropriado, juntamente com o tar para extrair o pacote de dados no diretório corrente.

Veja a comparação entre a compactação realizada pelos compactadores gzip, bzip2 e xz e um arquivo tar sem compactação:

$ ls -1shS linux*
895M linux.tar
165M linux.tar.gz
126M linux.tar.bz2
105M linux-5.4.3.tar.xz

Para o exame, é recomendado memorizar a seguinte tabela:

ExtensãoCompactador UtilizadoOpção do Tar
.tar.gzGzip$ tar xvzf arquivo.tar.gz
.tar.bz2Bzip2$ tar xvjf arquivo.tar.bz2
.tar.xzXz$ tar xvJf arquivo.tar.xz

Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.

Gostou? Compartilhe

 

Uira Ribeiro

Prof. Uirá Ribeiro

Chair do Board do Linux Professional Institute

Especialista Linux com mais de 20 anos de experiência.
Autor de 5 livros e mentor de mais de 14.000 alunos certificados.
20 certificações de alto nível, incluindo LPIC-3, CKA, RHCE e AWS Solutions Architect.

WhatsApp