Linux / Comando gzip: comprimir arquivos e preservar o original

O comando gzip comprime dados no formato .gz. Ao comprimir normalmente um arquivo regular pelo nome, ele o substitui pela versão comprimida após o sucesso; use -k ou -c quando precisar preservar o original.

Compressão e empacotamento são tarefas diferentes. O gzip não é um arquivador que reúne a árvore de vários diretórios. Para manter vários arquivos e seus caminhos em um único pacote comprimido, combine-o com tar para criar, listar e extrair pacotes.

Sintaxe e preparação

gzip [opções] [arquivo...]

Essa linha descreve a sintaxe; substitua os campos pelos nomes reais. Confira gzip --version e man gzip, pois este guia usa o GNU gzip e as opções disponíveis podem variar. Para os exemplos, prepare report.log em uma área de teste com permissão de leitura e escrita.

Confirme que report.log.gz, report-copy.log.gz, note.txt e note.txt.gz não contêm dados que precisam ser preservados. Os comandos abaixo criam esses arquivos. Use nomes de saída novos e não use o mesmo caminho como entrada e destino de um redirecionamento.

Comprimir preservando o original

Manter o arquivo de entrada: a opção -k cria report.log.gz e mantém report.log. O diretório precisa permitir a criação da saída e ter espaço suficiente.

gzip -k report.log

Escolher outro nome de saída: -c envia os dados comprimidos para a saída padrão. O shell grava esses dados em report-copy.log.gz por causa do operador >, enquanto o gzip mantém o arquivo de entrada.

gzip -c report.log > report-copy.log.gz

O redirecionamento merece uma conferência separada: o shell pode truncar um arquivo de saída existente antes mesmo de o gzip ler a entrada. Se a entrada estiver ausente ou a compressão falhar, a saída ainda pode ficar vazia ou incompleta. Não interprete a simples existência de .gz como sucesso; confira o código de saída e as mensagens.

Testar o fluxo comprimido: -t verifica a integridade do arquivo sem extrair seu conteúdo para um novo arquivo no disco.

gzip -t report.log.gz

Uma verificação bem-sucedida normalmente não imprime nada. No GNU gzip, o código de saída zero indica sucesso, um indica falha e dois indica um aviso. Leia o diagnóstico em vez de tratar a ausência de texto como a única confirmação.

Conferir os arquivos e a recuperação

O comando simples gzip arquivo normalmente substitui a entrada por arquivo.gz. Para observar a diferença sem perder o original, o exemplo abaixo escreve hello seguido de uma quebra de linha e usa -k. Escolha nomes livres antes de executar.

printf 'hello\n' > note.txt
gzip -k note.txt
ls note.txt*

Os dois nomes aparecem na listagem. Este bloco ilustra uma disposição em colunas; o ls também pode mostrar um nome por linha, conforme o terminal e suas opções.

note.txt  note.txt.gz

A presença dos dois nomes mostra que a entrada foi mantida, mas não prova sozinha que a cópia comprimida está correta. Use gzip -t note.txt.gz para procurar erros do fluxo. Para uma recuperação de teste sem substituir o original, use um nome novo, por exemplo gzip -dc report.log.gz > restored-report.log, e compare o conteúdo recuperado com report.log.

O formato gzip inclui uma verificação de redundância cíclica de 32 bits, chamada CRC-32, para detectar corrupção dos dados. Esse mecanismo não autentica quem criou o arquivo nem demonstra que ele corresponde à versão original que você esperava. Quando a procedência e a identidade forem importantes, confira também um resumo criptográfico (hash) ou uma assinatura obtidos por uma fonte confiável.

  1. Confira a entrada e escolha saídas novas; preserve uma cópia dos dados importantes.
  2. Use -k ou -c conforme precise manter o original ou escolher outro nome.
  3. Confira o código de saída e execute o teste de integridade com -t.
  4. Quando a recuperação importar, descomprima uma cópia para outro nome e compare seu conteúdo antes de descartar o original.

Opções principais

Opção Finalidade e condição
-k Mantém os arquivos de entrada durante a compressão ou descompressão.
-c Escreve na saída padrão e mantém os arquivos de entrada. Confira o redirecionamento e o nome da saída.
-t Verifica a integridade dos dados comprimidos. Não é uma autenticação de origem nem uma prova de correspondência à versão esperada.
-1 ... -9 Escolhe entre prioridade à velocidade e maior esforço de compressão. O tamanho final depende dos dados; o nível 9 não garante um ganho relevante.
-v Mostra informações sobre o processamento, como o nome e a redução percentual de cada arquivo.

Limites e cuidados

Compressão não é criptografia: um .gz não protege um conteúdo confidencial contra leitura. Preserve as permissões e o tratamento adequado dos dados e não confunda uma verificação de integridade com uma garantia de sigilo.

No uso normal com nomes de arquivos, fornecer várias entradas faz o gzip tratá-las separadamente. Isso não cria um pacote que preserve a estrutura de uma pasta. Mesmo a concatenação de fluxos gzip não substitui as funções de um arquivador como o tar.

Um arquivo pequeno ou pouco compressível pode ficar maior depois de comprimido por causa da estrutura adicional do formato. Não escolha o nível apenas pelo número mais alto: considere o tempo e o tamanho obtidos com seus próprios dados. Estes exemplos não são uma medição comparativa de desempenho.

Na verificação de 29 de outubro de 2026 com gzip 1.14 e Bash 5.3.9 do Git for Windows, os exemplos com -k, -c e -t funcionaram em arquivos de teste. As duas saídas comprimidas recuperaram exatamente os bytes originais. O arquivo de seis bytes note.txt permaneceu e sua versão comprimida tinha 35 bytes nesse teste; o ls capturado mostrou os dois nomes em linhas separadas.

Em testes adicionais, a compressão padrão removeu a entrada de teste após criar seu .gz; uma cópia com o campo CRC alterado foi rejeitada por -t. Um redirecionamento sobre um arquivo descartável deixou a saída vazia quando a entrada estava ausente, confirmando a importância de conferir erros. Tudo ocorreu em arquivos controlados no Windows; não foram testadas permissões nativas do Linux nem a preservação de todos os metadados.

Pergunta frequente

O gzip pode transformar um diretório inteiro em um único arquivo?

O gzip não é um arquivador de estruturas de diretórios. Combine-o com tar, por exemplo tar -czf backup.tar.gz directory/, depois de verificar a origem e se o nome de saída está livre. Para conferir a criação e a extração em outro diretório, consulte o guia do tar.

Documentação oficial

O manual oficial do GNU gzip descreve as opções e os códigos de saída. A especificação do formato gzip, RFC 1952, explica a estrutura do fluxo e o campo CRC-32.