Linux: compactando e descompactando arquivos com o tar

Linux: compactando e descompactando arquivos com o tar
lucas.felix
lucas.felix

Compartilhe

Introdução: Linux — compactando e descompactando arquivos com o tar

Se você é usuário Linux, quais tipos de extensão, para arquivos compactados, você costuma lidar? Será que é zip? Provavelmente não. Geralmente, encontramos arquivos com a extensão .tar.gz.

Mas por que .tar.gz? O que isso significa? Quando nos deparamos com arquivos do tipo .tar.gz, significa que dois processos ocorreram. O primeiro é o empacotamento dos arquivos no formato .tar. O segundo processo é a compactação no formato gzip.

O tar apenas une todos os arquivos em um só. Mas o tar não aplica algoritmos de compactação para que o arquivo resultante fique menor. Para isso utilizamos um outro formato, como o gzip.

A vantagem é que o tar consegue manter as permissões dos arquivos, bem como links diretos e simbólicos, sendo interessante por exemplo para realizar backups.

Utilizamos o comando tar para realizar as compactações. A compactação do diretório Projetos/ ficaria da seguinte forma.


$ tar -czf projetos.tar.gz Projetos/

A primera coisa que você deve ter notado é que, diferente do zip, o comando tar não necessita do -r. Ele age de forma recursiva por padrão. O -c é de create, ou seja, para indicar que desejamos criar um arquivo. O -z indica que queremos compactar com gzip. Utilizamos o -f (file), para que o comando crie o arquivo compactado.

Para descompactar, basta utilizar o -x de extract no lugar do -c.


$ tar -xzf projetos.tar.gz

O comando tar, ao contrário do zip, é silencioso (quiet) por padrão. Se quisermos que ele imprima os detalhes do que está fazendo, basta utilizar o argumento -v (verbose).

Se compararmos os tamanhos do arquivo .zip e do .tar.gz vamos perceber que nesse caso o .tar.gz ficou menor, mas isso não necessariamente irá sempre ocorrer.

[comparacao_targz_zip

Você pode aprender mais sobre esse e outro assunto na nossa formação Linux Essentials.

Veja outros artigos sobre DevOps