Compactar e descompactar arquivos é uma tarefa importante em qualquer sistema operacional, até aparelhos smartphone possuem este recurso importantíssimo. Em ambiente Windows podemos utilizar a ferramenta Winrar, já no famoso sistema do pinguim o procedimento é um pouco diferente.
Vamos trabalhar
Para podermos utilizar os recursos de compactar e descompactar arquivos devemos possuir alguns pacotes instalados. Quais são estes pacotes? Bom, os mais conhecidos são, gzip, bzip2, zip, rar e 7z.
Talvez você não possua todos instalados, então só por garantia execute este comando:
# aptitude install zip gzip bzip2 p7zip-full rar unrar-free
Lembre-se que você deve estar logado como root para poder executar este processo de instalação. Se algum destes já estiver instalado ele simplesmente será ignorado e os faltantes serão instalados sem problema algum.
Empacotando e desempacotando (tar)
Não confunda empacotamento e desempacotamento com compactação e descompactação. Quando realizamos um procedimento de compactação estamos utilizando algoritmos que tem como finalidade reduzir o tamanho final do arquivo gerado, já o processo de empacotamento visa gerar um único arquivo produto de uma união de outros arquivos.
$ tar cf diretorio.tar diretorio
Simples assim, arquivo.tar (será o arquivo gerado) e arquivo (e o conteúdo a ser empacotado) este por sua vez poderia ser um diretório já que não faz “muito sentido” empacotar um arquivo.
Compactando e descompactando com (tar.gz e tar.bz2)
Não consigo compactar e descompactar diretórios em gz e bz2. Obrigatoriamente devo empacotá-los e logo na sequencia compactá-los. Para isso vou passar ao comando tar parâmetros, vejamos um exemplo prático de compactação:
$ tar czf diretorio.tar.gz diretorio
$ tar cjf diretorio.tar.bz2 diretorio
Como pode ser visto, na primeiro linha empacotei com tar e compactei com (.gz), na segunda linha empacotei com tar e compactei em (.bz2).
Para descompactar:
$ tar -zxvf diretorio.tar.gz
$ tar -jxvf diretorio.tar.bz2
Agora vamos entender os parâmetros do tar:
c: Cria o arquivo final;
z: Especifica o tipo como gzip (.gz);
j: Especifica o tipo como bzip2 (.bz2);
x: Indica que o conteúdo será extraído;
v: Ativa o modo verbose, ou seja, lista todo o processo em tempo de execução;
f: É obrigatório, esse comando vem de file (arquivo).
Compactar e descompactar com (.gz e .bz2)
Este procedimento só funciona para arquivos, não consigo compactar um diretório com .gz ou .bz2, por isso mostrei os dois procedimentos anteriores que visam resolver este “problema”. Para compactar com .gz e .bz2 respectivamente utilizamos:
$ gzip arquivo
$ bzip2 arquivo
Para extrair:
$ gzip -d arquivo.gz
$ bzip2 -d arquivo.bz2
Compactar e descompactar (.zip)
O .zip me permite compactar arquivos e diretórios. Para compactar utilizo:
$ zip -r arquivo.zip arquivo
zip: É o comando utilizado, o tipo de compactação propriamente dita;
-r: Significa que a compactação é recursiva, ou seja, é utilizado quando vamos compactar diretórios;
arquivo.zip: É respectivamente o nome e a extensão do arquivo final;
arquivo: É o item a ser compactado.
Para extrair:
$ unzip arquivo.zip
Compactar e descompactar com (.rar)
Você pode compactar arquivos com o seguinte comando:
$ rar a arquivo.rar arquivo
Para descompactar:
$ unrar x arquivo.rar
ou
$ unrar-free x arquivo.rar
Obs: Não é possível compactar diretórios em .rar, você precisa antes empacotar o diretório como mostrado no inicio deste tutorial.
Compactar e descompactar com (.7z)
Para compactar:
$ 7z a arquivo.7z arquivo
Para extrair:
$ 7z e arquivo.7z
Obs: No 7z não é preciso empacotar o diretório para poder compactá-lo.