gzip: compactar arquivos no Linux, descompactar gzip e usar gunzip e zcat

Ambiente de testeFamília RHELAlmaLinux 9.8conta rootVerificado em 2026-11-05
Comandos de compressão · arquivamentogzipgunzipzcatLocalização/usr/bin/gzip
Compactar arquivos no Linux e descompactar gzip

gzip é o comando do Linux que compacta um único arquivo em um arquivo .gz; para descompactar, adicione -d ao mesmo comando ou use gunzip. Em um servidor AlmaLinux 9, um log de acesso de 31.878 bytes caiu para 4.424 bytes, e ao descompactar voltaram o tamanho e o horário de modificação originais.

As saídas abaixo vêm de uma pasta de teste em um servidor AlmaLinux 9.8, executadas como root, com horários em UTC. Os logs de acesso, as notas e os arquivos de configuração são arquivos de exemplo criados para o teste, e os endereços IP nos logs também são valores de exemplo para documentação.

1️⃣ Como usar o comando gzip

  • ↪️ Compactar um arquivo e manter o original (-k)

A pasta de teste tem dois logs de acesso, dois arquivos de notas, uma pasta config com arquivos de configuração e uma pasta restore vazia.

ls -l
total 88
-rw-r--r-- 1 root root 31878 Oct 28 23:50 access.log
-rw-r--r-- 1 root root 47748 Oct 27 23:59 access.log-20261027
drwxr-xr-x 2 root root    39 Oct 29 00:19 config
-rw-r--r-- 1 root root    45 Oct 28 14:30 memo.txt
-rw-r--r-- 1 root root   426 Oct 27 09:10 readme.txt
drwxr-xr-x 2 root root     6 Oct 29 00:19 restore

Se você escrever um nome de arquivo depois de gzip, esse arquivo vira um arquivo compactado com .gz no final do nome. O comando abaixo compacta access.log e não mostra nada ao terminar.

gzip access.log

Depois de compactar, ls -l não mostra mais access.log, só access.log.gz. O log de 31.878 bytes ficou com 4.424 bytes, e o horário de modificação continua sendo o do arquivo original.

ls -l access.log access.log.gz
ls: cannot access 'access.log': No such file or directory
-rw-r--r-- 1 root root 4424 Oct 28 23:50 access.log.gz

Com -v, o gzip mostra para cada arquivo a taxa de redução e o novo nome. O [81.5%] na linha de readme.txt é quanto o arquivo diminuiu em relação ao tamanho original, e [replaced with] significa que o arquivo original foi substituído pelo arquivo .gz.

gzip -v readme.txt
readme.txt:	 81.5% -- replaced with readme.txt.gz

Para manter o arquivo original, adicione -k. Se você compactar memo.txt com -k, memo.txt e memo.txt.gz ficam lado a lado.

gzip -k memo.txt
ls -l memo.txt memo.txt.gz
-rw-r--r-- 1 root root 45 Oct 28 14:30 memo.txt
-rw-r--r-- 1 root root 71 Oct 28 14:30 memo.txt.gz

O memo.txt de 45 bytes até cresceu para 71 bytes depois de compactado. Segundo o manual oficial, o gzip compacta mesmo quando o resultado fica maior que o original e guarda dentro do arquivo compactado o nome e o horário do arquivo original.

Se você indicar vários arquivos de uma vez, cada um gera seu próprio arquivo .gz. Ao compactar os dois arquivos de configuração da pasta config, saem dois arquivos, app.conf.gz e site.conf.gz.

gzip -v config/app.conf config/site.conf
config/app.conf:	 78.7% -- replaced with config/app.conf.gz
config/site.conf:	 87.7% -- replaced with config/site.conf.gz
ls -l config/
total 8
-rw-r--r-- 1 root root 206 Oct 20 11:00 app.conf.gz
-rw-r--r-- 1 root root  93 Oct 20 11:05 site.conf.gz

2️⃣ Descompactar gzip

  • ↪️ gzip -d e gunzip, descompactar em outra pasta (-c)

Ao descompactar access.log.gz com -d, nada é exibido, access.log volta e access.log.gz não fica.

gzip -d access.log.gz
ls -l access.log access.log.gz
ls: cannot access 'access.log.gz': No such file or directory
-rw-r--r-- 1 root root 31878 Oct 28 23:50 access.log

O access.log restaurado tem 31.878 bytes, e o horário de modificação é o mesmo de antes da compactação, Oct 28 23:50.

O gunzip faz o mesmo que gzip -d. Com -k, ele descompacta mantendo o arquivo compactado, e o [created] na linha de -v significa que um arquivo novo foi criado sem apagar o arquivo .gz.

gunzip -kv readme.txt.gz
readme.txt.gz:	 81.5% -- created readme.txt
ls -l readme.txt readme.txt.gz
-rw-r--r-- 1 root root 426 Oct 27 09:10 readme.txt
-rw-r--r-- 1 root root 108 Oct 27 09:10 readme.txt.gz

O gzip não tem opção para escolher a pasta de destino, então, para descompactar em outra pasta, use -c para mandar o conteúdo descompactado para a saída padrão e escreva o caminho do novo arquivo depois de [>]. O comando abaixo descompacta memo.txt.gz como memo.txt na pasta restore.

gzip -dc memo.txt.gz > restore/memo.txt
ls -l restore/
total 4
-rw-r--r-- 1 root root 45 Oct 29 00:19 memo.txt

Ao descompactar com -c, memo.txt.gz continua no lugar. O novo restore/memo.txt tem horário de modificação Oct 29 00:19, quando o arquivo foi criado.

3️⃣ Opções do comando gzip

  • ↪️ -l, -t, nível de compactação, -r

-l mostra em uma linha, sem descompactar, o tamanho compactado, o tamanho original, a taxa de redução e o nome que o arquivo terá ao ser descompactado. Ao compactar access.log de novo com -k e conferir com -l, o resultado é este.

gzip -k access.log
gzip -l access.log.gz
         compressed        uncompressed  ratio uncompressed_name
               4424               31878  86.2% access.log

Com -v junto, entram na frente o método de compactação (defla, abreviação de deflate), o CRC dos dados originais e a data e o horário do arquivo original.

gzip -lv access.log.gz
method  crc     date  time           compressed        uncompressed  ratio uncompressed_name
defla b49b41c4 Oct 28 23:50                4424               31878  86.2% access.log

-t só verifica se o arquivo compactado não está corrompido e termina. Usado com -v, mostra [OK] depois de cada arquivo sem problemas.

gzip -tv access.log.gz
access.log.gz:	 OK

Os números de -1 a -9 definem o nível de compactação, e segundo o manual oficial o padrão é -6. O mesmo access.log foi compactado três vezes com -c e os tamanhos foram comparados com wc -c.

gzip -c -1 access.log | wc -c
5564
gzip -c -6 access.log | wc -c
4424
gzip -c -9 access.log | wc -c
4164
Nível de compactaçãoTamanho do .gzEm relação ao original
Arquivo original (access.log)31.878 bytes100%
-1 (mais rápido)5.564 bytes17.5%
-6 (padrão)4.424 bytes13.9%
-9 (menor)4.164 bytes13.1%

-9 ficou 260 bytes menor que o padrão, e -1 ficou 1.140 bytes maior que o padrão.

Se você escrever só o nome de uma pasta, aparece [is a directory -- ignored] e a pasta é pulada.

gunzip config
gzip: config is a directory -- ignored

Para processar todos os arquivos de uma pasta, adicione -r. Ao descompactar com gunzip -r a pasta config, onde os dois arquivos de configuração tinham sido compactados, os dois arquivos são descompactados um após o outro.

gunzip -rv config
config/app.conf.gz:	 78.7% -- replaced with config/app.conf
config/site.conf.gz:	 87.7% -- replaced with config/site.conf
ls -l config/
total 8
-rw-r--r-- 1 root root 840 Oct 20 11:00 app.conf
-rw-r--r-- 1 root root 528 Oct 20 11:05 site.conf

-r compacta ou descompacta os arquivos de uma pasta um por um e não junta vários arquivos em um só. Para transformar uma pasta em um único arquivo compactado, use o comando tar, que empacota e compacta de uma vez. Ao compactar a pasta config com tar -czf, a pasta e os dois arquivos ficam dentro de um único config.tar.gz.

tar -czf config.tar.gz config
tar -tzvf config.tar.gz
drwxr-xr-x root/root         0 2026-10-29 00:19 config/
-rw-r--r-- root/root       840 2026-10-20 11:00 config/app.conf
-rw-r--r-- root/root       528 2026-10-20 11:05 config/site.conf

📌 Principais opções: resultados deste artigo

OpçãoTarefaResultado neste artigo
-cManda o resultado para a saída padrão e deixa o arquivo original como estáA saída de -dc enviada para restore/memo.txt criou um memo.txt de 45 bytes
-dDescompactar (igual ao gunzip)access.log.gz some e access.log de 31878 bytes volta
-kMantém o arquivo original depois de compactar ou descompactarmemo.txt (45 bytes) e memo.txt.gz (71 bytes) ficam lado a lado
-vMostra a taxa de redução e o novo nome de cada arquivoreadme.txt: 81.5% -- replaced with readme.txt.gz
-lLista o tamanho, a taxa e o nome após descompactar dos arquivos compactadosTamanho compactado 4424, tamanho original 31878, taxa 86.2%, nome access.log
-tVerifica se o arquivo compactado não está corrompidoCom -tv, access.log.gz: OK, e unexpected end of file para broken.gz, com o final cortado
-rCompacta ou descompacta todos os arquivos de uma pastaUm único gunzip -rv config descompactou config/app.conf.gz e config/site.conf.gz
-fSobrescreve sem perguntar mesmo que exista um arquivo com o mesmo nomeSobrescrito sem pergunta: não há memo.txt, só memo.txt.gz (71 bytes)
-1 ~ -9Nível de compactação (-1 mais rápido, -9 menor, padrão -6)Saídas compactadas com -1, -6 e -9 contadas com wc -c: 5564, 4424, 4164

📎 Outras opções: segundo o manual oficial

OpçãoTarefa
-NAo compactar, guarda o nome e o horário do arquivo original (padrão na compactação) e, ao descompactar, restaura o nome e o horário guardados
-nAo compactar, não guarda o nome e o horário do arquivo original e, ao descompactar, usa o nome sem .gz (padrão na descompactação)
-qNão mostra nenhum aviso
-S sufixoCompacta com o sufixo indicado no lugar de .gz e, ao descompactar, procura primeiro esse sufixo
--rsyncableCompacta de modo que só as partes alteradas sejam enviadas ao sincronizar arquivos compactados com outro servidor via rsync

🔲 Simulador do comando gzip

No simulador abaixo, você pode digitar os comandos para compactar com gzip, descompactar e ver o conteúdo com zcat e zgrep.

Simulador do comando gzipgzip 1.12
[root@server work]#
Funciona só no navegador e não compacta arquivos reais. Os tamanhos compactados são valores medidos, e o conteúdo novo criado no simulador usa valores estimados. Use ↑↓ para chamar comandos anteriores.

4️⃣ Ver o conteúdo de arquivos gzip

  • ↪️ zcat · zgrep

Logs antigos guardados com data no nome ocupam menos espaço se forem compactados com gzip. O comando abaixo compacta access.log-20261027, o log do dia anterior.

gzip access.log-20261027

Um log compactado pode ser exibido na tela com zcat sem ser descompactado. zcat é o mesmo comando que gunzip -c (segundo o manual oficial), então o arquivo .gz continua no lugar.

zcat access.log-20261027.gz | head -3
192.0.2.50 - - [27/Oct/2026:00:00:00 +0000] GET / HTTP/1.1 200 15929
192.0.2.54 - - [27/Oct/2026:00:00:07 +0000] GET / HTTP/1.1 200 17699
192.0.2.4 - - [27/Oct/2026:00:00:14 +0000] GET / HTTP/1.1 200 13813

A saída do zcat pode ser passada a outros comandos por um pipe, e contando com wc -l este log tem 600 linhas.

zcat access.log-20261027.gz | wc -l
600

Para procurar um texto específico em um log compactado, use zgrep. Com -c aparece só o número de linhas que contêm [ 404 ]; para ver as linhas, execute sem -c.

zgrep -c ' 404 ' access.log-20261027.gz
37
zgrep ' 404 ' access.log-20261027.gz | head -3
192.0.2.23 - - [27/Oct/2026:00:02:06 +0000] GET /old-page-6/ HTTP/1.1 404 229
192.0.2.38 - - [27/Oct/2026:00:04:40 +0000] GET /old-page-2/ HTTP/1.1 404 217
192.0.2.22 - - [27/Oct/2026:00:07:42 +0000] GET /old-page-6/ HTTP/1.1 404 414

Quando o zcat recebe um arquivo não compactado, mostra [not in gzip format] e para.

zcat access.log | head -1

gzip: access.log: not in gzip format

O zgrep também lê arquivos não compactados como estão, então você pode buscar de uma vez no log atual e nos logs antigos compactados. Com dois ou mais arquivos, o nome do arquivo aparece antes da contagem de linhas.

zgrep -c wp-login.php access.log access.log-20261027.gz
access.log:36
access.log-20261027.gz:52

5️⃣ Erros do gzip

  • ↪️ not in gzip format e unexpected end of file

Se você compactar de novo um arquivo que já termina em .gz, aparece [already has .gz suffix -- unchanged] e o arquivo continua igual.

gzip access.log.gz
gzip: access.log.gz already has .gz suffix -- unchanged

Ao contrário, se você descompactar com -d um arquivo que não termina em .gz, aparece [unknown suffix -- ignored].

gzip -d memo.txt
gzip: memo.txt: unknown suffix -- ignored

Um arquivo que só tem o nome .gz, mas não foi compactado com gzip, termina com [not in gzip format]. Esta mensagem apareceu ao copiar o arquivo de texto memo.txt com o nome notgzip.gz e descompactá-lo.

cp memo.txt notgzip.gz
gzip -d notgzip.gz

gzip: notgzip.gz: not in gzip format

Um arquivo .gz com o final cortado, por exemplo por um download interrompido, termina com [unexpected end of file]. Este é o resultado da verificação com -t de broken.gz, que manteve só os primeiros 2.000 bytes de um log antigo compactado.

head -c 2000 access.log-20261027.gz > broken.gz
gzip -t broken.gz

gzip: broken.gz: unexpected end of file

Mesmo de um arquivo cortado, o zcat consegue tirar o conteúdo até o ponto do corte. Das 600 linhas do log, 162 ficaram em restore/broken.log, e o manual oficial também orienta a salvar o início de um arquivo compactado danificado com o zcat.

zcat broken.gz > restore/broken.log
wc -l restore/broken.log

gzip: broken.gz: unexpected end of file
162 restore/broken.log

Se já existe um arquivo com o mesmo nome do .gz que será criado, o gzip pergunta se deve sobrescrevê-lo. Digitando n, o comando termina com [not overwritten] sem mudar nada.

gzip memo.txt
gzip: memo.txt.gz already exists; do you wish to overwrite (y or n)? n
	not overwritten

Com -f, o gzip sobrescreve na hora sem perguntar. Como -k não foi adicionado, memo.txt some e só memo.txt.gz fica.

gzip -f memo.txt
ls -l memo.txt memo.txt.gz
ls: cannot access 'memo.txt': No such file or directory
-rw-r--r-- 1 root root 71 Oct 28 14:30 memo.txt.gz

As mensagens de erro que surgiram ao lidar com a compactação e o que verificar em seguida são estas.

SaídaSignificadoO que verificar em seguida
already has .gz suffix -- unchangedO arquivo já termina em .gz, então não é compactado de novoSe você escreveu o nome do arquivo original a compactar
unknown suffix -- ignoredTentou descompactar um arquivo que não termina em .gzO nome do arquivo .gz com ls
not in gzip formatTem o nome .gz, mas não foi compactado com gzipO formato real (zip, tar) e o comando correspondente
unexpected end of fileO final do arquivo compactado está cortadoComparar o tamanho com o original e baixar de novo · salvar o início com zcat
already exists; do you wish to overwriteJá existe um arquivo com o mesmo nome do que será criadoy ou -f se puder sobrescrever · -c com outro nome para manter
is a directory -- ignoredEscreveu o nome de uma pasta em vez de um arquivo-r para os arquivos de uma pasta · tar para juntar tudo em um

🔢 FAQ & conteúdo recomendado

Depois de juntar a pasta config em x.tar com tar, compactá-lo com gzip -v e descompactá-lo com gunzip -v, só a camada .gz saiu e sobrou um x.tar de 10.240 bytes. Para tirar os arquivos empacotados, é preciso extrair mais uma vez com tar. Ao compactar de novo o x.tar.gz e extraí-lo com tar -xzf na pasta restore/t, a pasta config e os dois arquivos de configuração saíram de uma vez.

Um arquivo de 28.648.800 bytes feito com o mesmo log de acesso emendado 600 vezes foi compactado duas vezes em cada nível. -1 levou cerca de 0,3 segundo para 4.821.317 bytes, o padrão -6 cerca de 0,65 segundo para 3.625.500 bytes e -9 cerca de 2,5 segundos para 3.376.224 bytes. -9 ficou cerca de 7% menor que -6, mas levou quase quatro vezes mais tempo.

O gzip guarda o nome do arquivo original dentro do .gz ao compactar. Depois de copiar readme.txt.gz para a pasta restore como backup-1.gz, gzip -lN mostrou o nome guardado readme.txt, e gunzip -N criou restore/readme.txt. Sem -N, o nome é o do arquivo sem .gz (segundo o manual oficial).

ℹ️ Aviso de afiliados
O conteúdo deste site contém links de afiliados. Quando um visitante compra um produto ou serviço por meio de um desses links, o site recebe uma comissão do vendedor. O valor que o comprador paga (em promoções, ele diminui ↓) não aumenta por causa disso. Preços, descontos e informações de estoque valem para o momento em que o texto foi escrito e podem ter mudado, por isso confirme com o vendedor antes de comprar. Os produtos são escolhidos e avaliados por critérios próprios, e o recebimento de comissão não influencia a ordem de apresentação nem o conteúdo das avaliações.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Demonstre sua humanidade: 9   +   10   =