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ção
site.tar.gz     2,6M    # arquivo compactado com gzip
site.tar.bz2    2,4M    # arquivo compactado com bzip
site.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