gzip: compactar arquivos no Linux, descompactar gzip e usar gunzip e zcat
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
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 -ltotal 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 restoreSe 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.logDepois 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.gzls: cannot access 'access.log': No such file or directory
-rw-r--r-- 1 root root 4424 Oct 28 23:50 access.log.gzCom -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.txtreadme.txt: 81.5% -- replaced with readme.txt.gzPara 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.txtls -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.gzO 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.confconfig/app.conf: 78.7% -- replaced with config/app.conf.gz
config/site.conf: 87.7% -- replaced with config/site.conf.gzls -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.gz2️⃣ Descompactar gzip
Ao descompactar access.log.gz com -d, nada é exibido, access.log volta e access.log.gz não fica.
gzip -d access.log.gzls -l access.log access.log.gzls: cannot access 'access.log.gz': No such file or directory
-rw-r--r-- 1 root root 31878 Oct 28 23:50 access.logO 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.gzreadme.txt.gz: 81.5% -- created readme.txtls -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.gzO 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.txtls -l restore/total 4
-rw-r--r-- 1 root root 45 Oct 29 00:19 memo.txtAo 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 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.loggzip -l access.log.gz compressed uncompressed ratio uncompressed_name
4424 31878 86.2% access.logCom -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.gzmethod 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.gzaccess.log.gz: OKOs 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 -c5564gzip -c -6 access.log | wc -c4424gzip -c -9 access.log | wc -c4164| Nível de compactação | Tamanho do .gz | Em relação ao original |
|---|---|---|
| Arquivo original (access.log) | 31.878 bytes | 100% |
| -1 (mais rápido) | 5.564 bytes | 17.5% |
| -6 (padrão) | 4.424 bytes | 13.9% |
| -9 (menor) | 4.164 bytes | 13.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 configgzip: config is a directory -- ignoredPara 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 configconfig/app.conf.gz: 78.7% -- replaced with config/app.conf
config/site.conf.gz: 87.7% -- replaced with config/site.confls -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 configtar -tzvf config.tar.gzdrwxr-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ção | Tarefa | Resultado neste artigo | |
|---|---|---|---|
| -c | Manda 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 | |
| -d | Descompactar (igual ao gunzip) | access.log.gz some e access.log de 31878 bytes volta | |
| -k | Mantém o arquivo original depois de compactar ou descompactar | memo.txt (45 bytes) e memo.txt.gz (71 bytes) ficam lado a lado | |
| -v | Mostra a taxa de redução e o novo nome de cada arquivo | readme.txt: 81.5% -- replaced with readme.txt.gz | |
| -l | Lista o tamanho, a taxa e o nome após descompactar dos arquivos compactados | Tamanho compactado 4424, tamanho original 31878, taxa 86.2%, nome access.log | |
| -t | Verifica se o arquivo compactado não está corrompido | Com -tv, access.log.gz: OK, e unexpected end of file para broken.gz, com o final cortado | |
| -r | Compacta ou descompacta todos os arquivos de uma pasta | Um único gunzip -rv config descompactou config/app.conf.gz e config/site.conf.gz | |
| -f | Sobrescreve sem perguntar mesmo que exista um arquivo com o mesmo nome | Sobrescrito sem pergunta: não há memo.txt, só memo.txt.gz (71 bytes) | |
| -1 ~ -9 | Ní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ção | Tarefa | |
|---|---|---|
| -N | Ao 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 | |
| -n | Ao 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) | |
| -q | Não mostra nenhum aviso | |
| -S sufixo | Compacta com o sufixo indicado no lugar de .gz e, ao descompactar, procura primeiro esse sufixo | |
| --rsyncable | Compacta 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.
4️⃣ Ver o conteúdo de arquivos gzip
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-20261027Um 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 -3192.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 13813A 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 -l600Para 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.gz37zgrep ' 404 ' access.log-20261027.gz | head -3192.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 414Quando 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 formatO 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.gzaccess.log:36
access.log-20261027.gz:525️⃣ Erros do gzip
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.gzgzip: access.log.gz already has .gz suffix -- unchangedAo contrário, se você descompactar com -d um arquivo que não termina em .gz, aparece [unknown suffix -- ignored].
gzip -d memo.txtgzip: memo.txt: unknown suffix -- ignoredUm 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.gzgzip -d notgzip.gz
gzip: notgzip.gz: not in gzip formatUm 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.gzgzip -t broken.gz
gzip: broken.gz: unexpected end of fileMesmo 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.logwc -l restore/broken.log
gzip: broken.gz: unexpected end of file
162 restore/broken.logSe 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.txtgzip: memo.txt.gz already exists; do you wish to overwrite (y or n)? n
not overwrittenCom -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.txtls -l memo.txt memo.txt.gzls: cannot access 'memo.txt': No such file or directory
-rw-r--r-- 1 root root 71 Oct 28 14:30 memo.txt.gzAs mensagens de erro que surgiram ao lidar com a compactação e o que verificar em seguida são estas.
| Saída | Significado | O que verificar em seguida |
|---|---|---|
| already has .gz suffix -- unchanged | O arquivo já termina em .gz, então não é compactado de novo | Se você escreveu o nome do arquivo original a compactar |
| unknown suffix -- ignored | Tentou descompactar um arquivo que não termina em .gz | O nome do arquivo .gz com ls |
| not in gzip format | Tem o nome .gz, mas não foi compactado com gzip | O formato real (zip, tar) e o comando correspondente |
| unexpected end of file | O final do arquivo compactado está cortado | Comparar o tamanho com o original e baixar de novo · salvar o início com zcat |
| already exists; do you wish to overwrite | Já existe um arquivo com o mesmo nome do que será criado | y ou -f se puder sobrescrever · -c com outro nome para manter |
| is a directory -- ignored | Escreveu 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
Buscar
Comando grep do Linux
O comando grep para encontrar uma string em arquivos de texto como logs, com exemplos que o combinam com tail e find por pipe.
Disco
Comando du: verificar o espaço em disco de arquivos
O comando du para verificar quanto espaço em disco arquivos e diretórios ocupam.
Visualização de arquivos
Comandos head e tail do Linux
Os comandos head e tail para ver as primeiras e as últimas linhas de um arquivo, muito usados para conferir logs de acesso do servidor.
ℹ️ 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.