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 forma 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ão | Compactador Utilizado | Opção do Tar |
.tar.gz | Gzip | $ tar xvzf arquivo.tar.gz |
.tar.bz2 | Bzip2 | $ tar xvjf arquivo.tar.bz2 |
.tar.xz | Xz | $ 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
Tag:/dev, bash, certificação, certificaçãolinux, code, Comptia, developer, empreendedorismo, exame, freesoftware, gnu, hack, Linux, linuxfan, linuxfun, linuxmint, lovelinux, LPI, LPIC, management, nerd, opensource, php, prova, shell, software, softwarelivre, sql, tech, ti, unix