Linux / Comando zip: criar arquivos ZIP e conferir o conteúdo
O comando zip reúne arquivos e diretórios em um único arquivo ZIP, que pode ser usado para trocar dados com outros sistemas operacionais. Use -r para incluir o conteúdo das pastas e confira o pacote com unzip -l e unzip -t.
O primeiro argumento é o ZIP a criar ou atualizar; os seguintes são os arquivos de entrada. Se o ZIP já existir, a operação pode substituir entradas com o mesmo caminho e acrescentar outras, mantendo entradas antigas que não foram selecionadas. Para criar um pacote independente, escolha um nome novo em vez de presumir que o arquivo existente será esvaziado.
Sintaxe básica e preparação
zip [opções] arquivo.zip arquivo ou diretório...
Essa linha descreve a sintaxe: substitua os nomes indicativos pelos caminhos reais. Confira a implementação instalada com zip -v e as opções locais com man zip. Os exemplos abaixo usam a sintaxe do Info-ZIP; o programa unzip, usado para consultar e testar, pode ser fornecido por outro pacote da distribuição.
Execute os exemplos numa pasta de trabalho com os arquivos indicados, permissão de leitura nas entradas e de escrita no destino. Escolha nomes de saída ainda inexistentes e mantenha espaço para as entradas e o ZIP. Os exemplos comuns abaixo preservam os arquivos de origem; não acrescentam a opção de movimentação -m, que pode removê-los.
Exemplos de criação e consulta
Reunir dois arquivos
Coloque report.txt e notes.txt na pasta atual e confirme que documents.zip ainda não existe.
zip documents.zip report.txt notes.txt
O resultado esperado é um ZIP com as duas entradas, mantendo os dois arquivos originais. Se um nome tiver espaços, envolva seu caminho em aspas. Leia eventuais avisos sobre entradas ausentes ou inacessíveis antes de considerar o pacote completo.
Comprimir um diretório inteiro
Execute a partir da pasta que contém project/. A opção -r percorre os subdiretórios.
zip -r project.zip project/
Os caminhos ficam identificados como project/..., incluindo a pasta inicial. A recursão do Info-ZIP também inclui nomes iniciados por ponto dentro da pasta indicada; isso é diferente de depender apenas da expansão de * pelo shell. Revise arquivos ocultos antes de distribuir o pacote, pois eles podem conter configurações que você não pretendia compartilhar.
Consultar o arquivo criado
O comando de consulta e extração com unzip, explicado em inglês permite conferir os nomes armazenados:
unzip -l project.zip
A listagem apresenta nomes, tamanhos descomprimidos e datas, mas não equivale a ler e validar todo o conteúdo. Compare os caminhos com o que pretendia incluir; a presença de project/ sozinha não demonstra que seus arquivos foram incluídos.
Um teste completo com um arquivo pequeno
Prepare uma pasta de teste vazia e entre nela. O nome note.txt e o destino bundle.zip devem estar livres; o redirecionamento > da primeira linha substituiria um arquivo de mesmo nome. Execute as linhas em ordem, conferindo cada resultado antes de continuar.
printf 'hello\n' > note.txt
zip -q bundle.zip note.txt
unzip -Z -1 bundle.zip
A primeira linha cria note.txt com o texto hello e uma quebra de linha. -q reduz as mensagens de progresso do zip; unzip -Z -1 solicita a listagem simples dos nomes. Com um ZIP novo contendo apenas esse arquivo, a saída esperada é:
note.txt
Se bundle.zip já existisse, outros nomes poderiam continuar nele. Esse teste deve produzir o pacote e manter note.txt. As três linhas não interrompem automaticamente a execução após uma falha: o sucesso da listagem final não prova que a criação anterior funcionou.
- Confirme que o comando
zipterminou sem avisos de arquivos omitidos. No Info-ZIP, o código de saída0indica conclusão normal sem erros ou avisos. - Consulte os nomes com
unzip -Z -1 bundle.zipe confirme que correspondem às entradas pretendidas. - Execute
unzip -t bundle.zipe leia o resultado do teste de cada entrada. Esse teste descomprime os dados em memória e verifica o CRC, a soma de verificação cíclica armazenada no ZIP; não cria os arquivos extraídos no diretório atual. - Antes de depender do pacote como cópia de segurança, experimente a extração em um diretório separado e compare os arquivos recuperados com os originais. Um teste de integridade bem-sucedido não autentica o remetente nem demonstra que todos os arquivos necessários foram incluídos.
Na verificação de exemplos em 30 de outubro de 2026, foram usados o Zip 3.0 distribuído com o TeX Live para Windows e o UnZip 6.00 do Git for Windows, executados pelo Git Bash 5.3.9. Em arquivos de teste próprios, os quatro blocos executáveis acima terminaram com código 0; o exemplo pequeno preservou a entrada de seis bytes e listou somente note.txt. O teste de integridade aceitou o ZIP íntegro e retornou 2 após uma alteração controlada em seu conteúdo. Essa execução no Windows não verifica permissões, propriedade ou todos os metadados de um Linux nativo.
Opções principais e atualização de um ZIP
| Opção | Quando usar |
|---|---|
-r |
Inclui recursivamente os arquivos e subdiretórios dos caminhos informados. |
-0 |
Armazena sem comprimir. O resultado continua sendo um ZIP. |
-1 ... -9 |
Seleciona o nível de compressão. No Info-ZIP, o padrão é -6; -1 favorece velocidade e -9 dedica mais trabalho à compressão. Não há garantia de redução relevante em arquivos já comprimidos. |
-u |
Com arquivos de entrada informados, atualiza entradas quando o arquivo em disco é mais recente e acrescenta nomes novos. Não é uma comparação completa dos bytes. |
-x padrão |
Exclui caminhos correspondentes ao padrão. No shell, use aspas para que o próprio zip interprete curingas, por exemplo zip -r project.zip project/ -x 'project/sub/*', com um ZIP novo. |
Ao reutilizar um ZIP, arquivos antigos que não aparecem na nova seleção podem permanecer no pacote. Por exemplo, executar zip reused.zip report.txt e depois zip reused.zip notes.txt pode deixar os dois nomes em reused.zip. Isso não sincroniza automaticamente o arquivo com tudo o que foi apagado do disco.
A opção -u usa a data de modificação para decidir a atualização de uma entrada existente. Se os bytes mudarem, mas a data não for mais recente, a versão antiga pode permanecer. Na mesma verificação controlada no Windows, esse caso manteve a entrada anterior e retornou 12, que o manual do Info-ZIP descreve como nenhuma ação a realizar; com data mais recente e um nome novo, a atualização retornou 0 e as duas entradas esperadas foram conferidas. Antes de atualizar um pacote importante, guarde uma cópia independente e consulte o resultado.
Cuidados com segurança e compatibilidade
A compactação não equivale a criptografia. A criptografia tradicional oferecida pelas opções de senha do Info-ZIP não deve ser tratada como proteção forte para informações sensíveis; escolha uma ferramenta e um método de criptografia adequados à exigência de segurança. O teste de CRC detecta certas alterações nos dados, mas não substitui a autenticação da origem.
O formato ZIP facilita a troca entre sistemas, mas não garante a preservação idêntica de permissões, propriedade e outros metadados. Para uma cópia de segurança de sistema Linux, avalie também o empacotamento com tar e suas opções de extração conforme os atributos necessários. A restauração real e o programa de destino também precisam ser verificados.
Pergunta frequente
zip project.zip project/ inclui todos os arquivos da pasta?
Não. Sem recursão, o comando pode registrar apenas a entrada do diretório. Para percorrer seu conteúdo, use zip -r project.zip project/, criando um ZIP novo, e confira os caminhos com unzip -l project.zip. O teste de integridade é uma etapa adicional; ele não identifica arquivos que deveriam ter sido incluídos, mas ficaram de fora.
Documentação oficial
O manual do Info-ZIP publicado pelo Ubuntu descreve os modos de atualização, as opções e os códigos de saída. O manual do UnZip publicado pelo Ubuntu detalha a listagem e o teste de CRC. Consulte também as páginas instaladas na sua distribuição, pois versões e opções compiladas podem diferir.




