Compactar e Descompactar Arquivos no Linux Utilizando o Terminal

Existem duas formas bastante utilizadas: uma mais conhecida no mundo Windows que é o formato zip, e o formato tar gz mais familiar aos usuários Linux. Vamos mostrar as duas, começando pelo formato zip.

Formato zip

Para fins de exemplo, vamos compactar um diretório chamado Projetos que foi criado em um dos artigos passados. Provavelmente você está aqui porque já possui um arquivo e deseja compactá-lo. Então é só substituir pelo nome do seu arquivo.

Iniciamos o comando de compactação, primeiramente escrevendo zip. Na sequência, informamos o nome do nosso arquivo zip a ser criado e depois, o arquivo a ser zipado. Vamos compactar o nosso diretório Projetos em um arquivo zip chamado Backup.zip. A sintaxe é a seguinte:

zip Backup.zip Projetos

Agora vamos dar uma espiada no que temos dentro desse arquivo zipado. O comando seria o mesmo utilizado para descompactar, que é unzip. A diferença é que passamos também o parâmetro -l.

unzip -l Backup.zip
Comando que compacta e lista arquivo compactado.

Perceba que o diretório está vazio, isso porque, não informamos o -r para que a compactação fosse feita de forma recursiva.

Então vamos apertar "seta para cima" em nosso teclado quantas vezes for necessário até acessar novamente o comando anterior de compactação e adicionar essa flag.

zip -r Backup.zip Projetos

Sintetizando Saídas – Reduzindo Informações de Log

Ao descompactar nosso arquivo zip no diretório onde os arquivos descompactados já existem, somos perguntados se queremos sobrescrevê-los. Escolhendo a opção all, para sobrescrever tudo por exemplo, é impresso detalhes de cada ação realizada.

Mas há momentos em que queremos otimizar um pouco as saídas, como pode ser o caso em um arquivo de log por exemplo. Nesses casos, podemos utilizar o parâmetro -q (quiet) que reduz um pouco o nível de detalhamento das informações.

Na imagem abaixo, descompactei o arquivo primeiramente sem e depois com o quiet. Ele pode ser combinado com outros parâmetros também. Por exemplo: ao compactar, quando você usa -r, você pode ao mesmo tempo usar -q e ficaria -r -q ou, de forma mais sintética, -rq.

Comando para descompactar arquivo zip.

Falei neste ponto sobre o quiet, mas ele pode ser empregado em diversos outros comandos. É uma boa sempre dar uma conferida no manual de comandos do Linux que foi citado nesse artigo quando você estiver em dúvida se determinado comando aceita esse parâmetro.

Formato Tar Gz

No mundo Linux, a maneira mais convencional de compactar arquivos é utilizando uma combinação do tar com o zip. Resultando em um arquivo .tar.gz.

O tar sozinho serve para empacotar vários arquivos e diretórios em um único arquivo, facilitando assim a transferência. Já o zip, como vimos acima, compacta. A vantagem é que a combinação dos dois produz um arquivo mais compacto – pequeno.

Então vamos novamente compactar o nosso diretório Projetos utilizando o formato .tar.gz e depois comparar o tamanho dos arquivos.

Iniciamos o comando digitando tar. Informamos na sequência o modificador -c (create) que irá criar o arquivo tar. Depois de criado, ele deve ser zipado, então: z.

Após os dois parâmetros citados acima, vamos informar o diretório a ser compactado, que no caso é o Projetos. O tar, diferente do zip, por padrão já é recursivo. Então não precisamos informar o -r.

Para finalizar, faltou informar o nome do arquivo .tar.gz que pretendemos criar. Dizemos que gostaríamos de redirecionar a saída, então utilizamos o sinal que indica saída de dados >, para um arquivo chamado Backup.tar.gz que é o formato que ele cria.

tar -cz Projetos > Backup.tar.gz
Compactação com tar gz no Linux.

Repare que no nosso exemplo, o arquivo .tar.gz ficou bem menor.

Não sei se você notou, mas o tar já é quieto por padrão. Se eu quiser informações mais detalhadas sobre o que ele está fazendo, preciso informar isso incluindo -v nos parâmetros. Isso se chama aumentar o nível de verbose.

Excluí o meu diretório Projetos e agora vou descompactar o Backup.tar.gz.

tar -xz Projetos < Backup.tar.gz

Perceba que houveram apenas duas alterações em relação ao comando de compactação. A presença do -x (extract) para extrair os arquivos, e a direção do redirecionamento < que agora em vez de indicar saída de dados, indica entrada de dados.

A forma mais comumente utilizada e alternativa aos redirecionamentos é a com o modificador -f. Com esse modificador, a sintaxe para compactação e extração ficará assim:

tar -czf Backup.tar.gz Projetos
tar -xzf Backup.tar.gz

O parâmetro z na verdade é ignorado na extração. No manual de comandos do Linux fala que só funciona no creation mode.

Logo, poderíamos fazer tar -xf Backup.tar.gz para extrair.

Agora a opção aumentando o nível de verbose.

tar -vczf Backup.tar.gz Projetos
tar -vxf Backup.tar.gz
Ir para o topo