Português do Brasil English
Devin no Facebook  Devin no Twitter  RSS do Site 
Linux    

Descompactar e compactar no Linux


Comentários  7
Visualizações  
99,908

tar – Agrupando arquivos

Compactar arquivos e diretórios para o que chamamos de arquivo compactado tem na verdade duas fases: primeiro agrupa-se os arquivos e diretórios em um só, depois compacta-se este arquivo agrupado.

O tar é um utilitário que faz o primeiro passo. Ele é um programa de arquivamento feito para armazenar e extrair arquivos e diretórios do que chamamos de “arquivo tar” (ou tarball). Por padrão, o tar espera que os procedimentos de armazenamento e extração sejam feitos em uma fita DAT, mas graças ao parâmetro -f podemos utilizá-lo em arquivos comuns do sistema. Por enquanto, aqui trabalharemos apenas em arquivos.

Por agrupar todos os arquivos em um só, o tar é a ferramenta padrão para distribuição de arquivos. Provavelmente qualquer programa ou código-fonte para Linux que vermos disponível na Internet estará neste formato, acrescentado de uma compactação que veremos adiante.

Sintaxe: $ tar <ação> [opções] <tarball destino> <arquivos> [arquivos2] ...

Na ação, vamos ressaltar que podemos utilizar uma destas três: -c para criar (agrupar), -x para extrair (desagrupar) e -t para listar. Existem outras ações também, caso queira saber consulte a página de manual.

Criando um arquivo chamado backup-etc.tar:

# cd /
# tar -cvf backup-etc.tar etc/
...corte...
# ls -lh backup-etc.tar
-rw-r--r-- 1 root root 23M 2008-08-31 02:12 backup-etc.tar

Note que usamos a opção -v, que ativa o modo verbose, mostrando todos os arquivos que estão sendo processados.

Agora vamos listar o conteúdo do arquivo que criamos:

# tar -tf backup-etc.tar
...corte...

Como está tudo dentro do arquivo, vamos descompactá-lo dentro do diretório /tmp/backup-etc:

# mkdir -p /tmp/backup-etc
# cd /tmp/backup-etc
# tar -xvf /backup-etc.tar
...corte...
# ls

Pronto. Uma cópia do diretório /etc!

gzip, bzip2 – Compactar e descompactar arquivos

Agora que temos todos os arquivos agrupados em um só, podemos utilizar o gzip ou bzip2 para compactar este arquivo. A diferença entre os dois é apenas em seu algoritmo, ou seja, o modo e a eficiência com que compactam. O gzip existe há muito mais tempo, é menos faminto em termos de processamento. O bzip2 tem uma compactação melhor (principalmente para arquivos texto), mas utiliza muito mais o processador.

A extensão de arquivos em gzip é .gz. A extensão de arquivos em bzip2 é bz2.

Sintaxe: $ gzip [-d] arquivo[.gz]
Sintaxe: $ bzip2 [-d] arquivo[.bz2]

Ao compactar um arquivo, o programa automaticamente adiciona a extensão correspondente ao seu nome. Exemplo:

$ ls -lh texto*
-rw-r--r-- 1 eitch eitch 89K 2008-06-20 02:26 texto
-rw-r--r-- 1 eitch eitch 89K 2008-06-20 02:26 texto2
$ gzip texto
$ bzip2 texto2
$ ls -lh texto*
-rw-r--r-- 1 eitch eitch 26K 2008-08-31 02:26 texto2.bz2
-rw-r--r-- 1 eitch eitch 30K 2008-08-31 02:26 texto.gz

Ao descompactar estes arquivos, o programa irá retirar automaticamente a sua extensão. Vamos descompactar os arquivos criados anteriormente:

$ gzip -d texto.gz
$ bzip2 -d texto2.bz2
$ ls -lh texto*
-rw-r--r-- 1 eitch eitch 89K 2008-08-31 02:26 texto
-rw-r--r-- 1 eitch eitch 89K 2008-08-31 02:26 texto2

Agora vamos compactar o arquivo backup-etc.tar criado com o comando tar:

# cd /
# ls -lh backup-etc.tar
-rw-r--r-- 1 root root 23M 2008-08-31 02:30 backup-etc.tar
# bzip2 backup-etc.tar
# ls -lh backup-etc.tar.bz2
-rw-r--r-- 1 root root 2.1M 2008-08-31 02:30 backup-etc.tar.bz2

O que era antes 23MB, agora 2.1MB.

Ao descompactar os arquivos, podemos utilizar também os comandos gunzip e bunzip2, que fazem exatamente a mesma coisa que a opção -d do gzip e bzip2. Por exemplo, isto seria o equivalente para descompactar o arquivo backup-etc.tar.bz2 recém-criado:

$ bunzip2 backup-etc.tar.bz2

Para facilitar as coisas e não precisar usar dois comandos para compactar e descompactar vários arquivos, o tar possui dois parâmetros que integram o gzip2 e bzip2: -z e -j respectivamente. Ao utilizar estes parâmetros no agrupamento ou na extração, ele vai utilizar o respectivo compactador. Por exemplo, para fazer o backup dos diretórios /boot e /etc apenas com o tar:

# cd /
# tar -cjvf backup2.tar.bz2 boot/ etc/
...corte...
# ls -lh backup2.tar.bz2
-rw-r--r-- 1 root root 18M 2008-08-31 02:43 backup2.tar.bz2

Desta vez já criamos o arquivo compactado. Para descompactar é a mesma coisa, basta apenas acrescentar o parâmetro do compactador ao comando tar:

# cd /tmp/backup
# tar -xjvf /backup2.tar.bz2
...corte...

zip, rar – Outros formatos de arquivos compactados

Além dos dois tradicionais formatos de arquivos compactados (gzip e bzip2), podemos encontrar arquivos em outros formatos bem populares, como o ZIP e RAR. O ZIP é talvez um dos formatos de compactação mais antigos para quem este trabalhando em plataformas que não sejam UNIX…

Para compactar um arquivo no formato zip, utilizamos o comando zip da seguinte forma:

$ zip -r lab.zip /home/eitch/lab/
...corte...

O comando acima irá jogar no arquivo lab.zip o diretório /home/eitch/lab. O parâmetro -r no comando indica o fator recursivo: o zip vai compactar o diretório e todos seus arquivos e sub-diretórios. Se o -r não fosse usado, teríamos apenas o diretório lab/, sem mais nada.

Para descompactar o mesmo arquivo utilizamos o comando unzip:

$ unzip lab.zip
...corte...

Isto descompactará o arquivo lab.zip dentro do diretório atual. Pode ser útil que ao invés de ir descompactando logo o arquivo, verificar o que tem nele primeiro. Para isso basta executar:

$ unzip -l lab.zip
...corte...

Já o formato RAR, um popular formato de arquivo que circula principalmente em comunidades Peer-to-Peer, geralmente não vem junto com as distribuições Linux devido à sua licença proprietária. Por esse motivo, não recomendamos que você o utilize. Caso seja preciso, os utilitáros do RAR podem ser encontrados no endereço:

Alguns repositórios de terceiros distribuem pacotes de distribuição com o nome unrar. O unrar é o responsável pela descompactação dos arquivos em formato RAR e pode ser usado da seguinte forma:

$ unrar e arquivo.rar

Isto irá descompactar todo o conteúdo do arquivo.rar para o diretório atual. Para listar o conteúdo do arquivo:

$ unrar l arquivo.rar

Referências

  • XKCD 1168 – Mais de uma década depois, isso continua acontecendo… :)

Comentários  7
Visualizações  
99,908


TagsLeia também

Apaixonado por Linux e administração de sistemas. Viciado em Internet, servidores, e em passar conhecimento. Idealizador do Devin, tem como meta aprender e ensinar muito Linux, o que ele vem fazendo desde 1997 :-)


Leia também



Comentários

7 respostas para “Descompactar e compactar no Linux”

  1. escriba666 disse:

    muito bom estes teus documentos cara

    parabéns

  2. Gustavo disse:

    ai como descompacta um ARQUIVO DAT(.dat)

  3. [...] copiado do site http://www.devin.com.br artigo Compactação e Descompactação postado por Hugo Cisneiros (Eitch) em 18 de setembro de [...]

  4. william disse:

    Perfeito, muito bom o post..parabens

  5. Diego disse:

    Muito bom, gostaria de saber se existe uma maneira de fazer super-compactação no linux.

  6. Admiring the time and energy you put into your site and in depth information you provide. It’s awesome to come across a blog every once in a while that isn’t the same old rehashed material. Great read! I’ve bookmarked your site and I’m adding your RSS feeds to my Google account.

Deixe uma resposta