Como zipar arquivos e pastas no Linux: comando zip, compactação e descompactação

lucas.felix
lucas.felix

Compartilhe

Avalie este artigo

4 minutos de leitura

Compactar e descompactar diretórios e arquivos é uma tarefa bastante comum no dia a dia. Podemos compactar um diretório para enviar para um amigo ou realizar um backup.

Talvez para alguns usuários, mais comum que a compactação seja a descompactação: no nosso cotidiano podemos baixar arquivos compactados dos mais diversos tipos e, naturalmente precisaremos descompactá-los para que seja possível utilizá-los devidamente. 

O objetivo da compactação é unir vários arquivos em um só, fazendo também com que o arquivo final fique menor e seja mais fácil de transferir. Isso é feito através de programas compactadores de arquivos, que utilizam algoritmos para que seja possível reduzir o tamanho dos dados que serão compactados. 

Banner da Alura convidando profissionais a desenvolver habilidades em inteligência artificial para acompanhar as transformações do mercado de tecnologia. A campanha destaca que quem utiliza IA produz mais, cresce na carreira e se torna mais competitivo, reforçando que a inteligência artificial deixou de ser tendência e passou a ser uma habilidade essencial. O banner incentiva a começar a aprender IA com os cursos da Alura e impulsionar a transformação digital.

Um dos formatos de compactação mais conhecidos é o zip. Você certamente já viu algum arquivo com extensão .zip em sua vida.

No Linux, para compactar no formato .zip utilizamos o comando zip. Tenho um diretório, dentro do diretório do meu usuário (/home/nome_do_usuario) que contém alguns projetos, vamos ver o conteúdo desse diretório através do comando $ ls -l Projetos/

Note que utilizei o argumento -l junto ao ls para obter uma lista mais detalhada. O "d" no início de cada linha indica que temos dois diretório dentro de Projetos (GeradorDeXML e GeradorDeJSON). 

Vamos compactar a pasta projetos utilizando o zip. Para isso basta passar para o comando o nome do arquivo que irá conter os dados compactados e o que desejamos compactar. 

BASH  
$ zip projetos.zip Projetos/ adding: Projetos/ (stored 0%)

Nota: Em muitas distribuições Linux o comando zip pode não estar instalado por padrão. Se você receber o erro command not found, instale-o utilizando: sudo apt install zip unzip (Debian/Ubuntu) ou sudo dnf install zip unzip (Fedora/RHEL). 

Compactamos o diretório Projetos/ para um arquivo zip. E para descompactar? Será que temos que usar zip -alguma coisa? Na verdade, para fazermos a descompactação utilizamos um outro comando, o unzip

Mas antes vamos listar os arquivos que estão inclusos no nosso arquivo .zip. Para isso basta utilizar o argumento -l (list). 

BASH  
$ unzip -l projetos.zip Archive: projetos.zip Length Date Time Name --------- ---------- ----- ---- 0 2016-05-01 15:02 Projetos/ --------- ------- 0 1 file

Espera aí! Dentro do arquivo projetos.zip existe apenas o diretório Projetos/. O que houve com os diretórios GeradorDeJSON e GeradorDeXML

Acontece que, por padrão, o zip não inclui os arquivos e subdiretórios de um diretório, por isso nosso .zip contém apenas o diretório Projetos/ vazio. Para resolver isso é fácil: basta passar o argumento -r (recursive). 

BASH  
$ zip -r projeto.zip Projetos/ updating: Projetos/ (stored 0%) updating: Projetos/GeradorDeXML/ (stored 0%) updating: Projetos/GeradorDeXML/GeradorXML.java (deflated 53%) updating: Projetos/GeradorDeJSON/ (stored 0%) updating: Projetos/GeradorDeJSON/GeradorJSON.java (deflated 53%)

Veja só! A saída do zip já foi diferente. Vamos listar o conteúdo do .zip gerado. 

BASH  
$ unzip -l projeto.zip Archive: projeto.zip Length Date Time Name --------- ---------- ----- ---- 0 2016-05-01 18:03 Projetos/ 0 2016-05-01 18:00 Projetos/GeradorDeXML/ 594 2016-04-25 14:08 Projetos/GeradorDeXML/GeradorXML.java 0 2016-05-01 18:00 Projetos/oi.txt 0 2016-05-01 18:00 Projetos/GeradorDeJSON/ 594 2016-04-25 14:08 Projetos/GeradorDeJSON/GeradorJSON.java --------- ------- 1188 6 files

Agora sim! Os subdiretórios foram incluídos. Perceba que o zip, por padrão, informa na saída do terminal todos os diretórios e subdiretórios que estão sendo compactados. O unzip funciona da mesma forma na descompactação. Para que isso não ocorra, podemos utilizar o argumento -q (quiet). 

Vamos primeiro excluir o diretório Projetos/ para que no momento da descompactação o diretório seja criado novamente. 

BASH  
$ rm -r Projetos/ $ unzip -q projeto.zip

Pronto! O arquivo foi descompactado e temos a estrutura de diretórios de antes. 

Vimos como utilizar o zip para compactação e descompactação de arquivos. Em breve um outro post será publicado onde será utilizado o tar para realizar a compactação e descompactação. 

Cursos de uma série preparatória para a certificação Linux Essentials também estão sendo lançados

Avalie este artigo 

✨ Agradecemos pela sua avaliação! ✨ 

Avalie este artigo

Veja outros artigos sobre DevOps

Estude 2 anos por R$ 158/mês. Planos com até 35% OFF. Ver planos.