Cookies para estatística e publicidade
Usamos cookies de estatística e de publicidade, ambos enviados ao Google. Recusar não muda nada do que você vê.Ler a página de privacidade
GZ
Comprime um único arquivo. Junto com TAR forma o compactado habitual no Unix.
GZ
GZ é um formato de fluxo, escrito e lido do começo ao fim. Ele é usado para a web e o arquivamento.
A extensão é .gz e o nome por extenso é Gzip Archive. Os dois importam menos do que aquilo que o arquivo consegue carregar, e é disso que trata o resto desta página.
Ele remonta a 1992. A especificação é RFC 1952.
A um formato que se manteve legível por tanto tempo dá para confiar algo que você quer de volta daqui a dez anos.
Ela está publicada por inteiro, então dá para implementá-la a partir do documento em vez de por observação — é por isso que o formato aparece em tantos programas e por isso que arquivos escritos há vinte anos ainda abrem. Especificação publicada não é o mesmo que livre de royalties: quando o formato embrulha um codec, o licenciamento das patentes é uma questão à parte, que a norma não resolve.
GZ guarda o conteúdo exatamente. Salvar de novo não muda nada, então dá para abrir, editar e salvar quantas vezes você quiser sem acumular estrago — e é isso que faz dele um formato de trabalho e não de entrega.
GZ comprime um único fluxo e não faz ideia do que seja um nome de arquivo ou uma pasta. É por isso que ele aparece tantas vezes ao lado do TAR, que fornece a estrutura que falta.
GZ consegue carregar um arranjo que permite começar a tocar antes de ter chegado por inteiro.
Isso conta sobretudo na conversão: o que o destino não comporta é descartado, quase sempre sem aviso.
Ele trabalha com 32 KB de cada vez: é dentro desse intervalo que uma repetição precisa caber para poder ser comprimida.
Esse único número explica a maior parte da diferença entre um formato de arquivamento e outro. Um intervalo maior encontra mais repetição e leva mais tempo e mais memória para isso — a troca é toda essa.
GZ traz uma soma de verificação, para que um arquivo danificado seja detectado em vez de lido errado em silêncio.
Consertar, uma soma de verificação não conserta nada. Ela diz que o arquivo está errado — essa é a diferença entre descobrir agora e descobrir por quem recebeu.
gzip, 7-Zip e Keka leem esse formato, e a maioria dos programas do mesmo tipo também.
Quando um arquivo não abre, o formato raramente é o problema — mais comum é o programa ser mais antigo que ele. Converter para algo mais antigo é o caminho confiável, e é para isso que serve o resto deste site.
Nenhum navegador lê o formato.
Esse é de longe o motivo mais comum para convertê-lo: não que o formato seja ruim, mas que o lugar onde você quer mostrar o arquivo não consegue lê-lo.
GZ foi feito para ser entregue, não para se trabalhar dentro dele. Editar um é possível e raramente agradável; o caminho sensato passa pelo original e por uma nova exportação.
As reclamações que se repetem: ele guarda um único fluxo e não sabe descrever uma pasta.
Nada disso é motivo para evitar o formato. São as coisas que vale conhecer antes que uma delas te pegue de surpresa, o que é uma afirmação diferente e mais útil.
O gzip comprime um fluxo único. Não tem diretório, não tem lista de nomes, não tem conceito de vários arquivos. Comprima um documento e você recebe o mesmo documento com a extensão .gz por cima; não há mais nada dentro, e descomprimir devolve exatamente um arquivo.
É por isso que a combinação tar mais gz é a forma normal, e por que a extensão tem duas partes. O tar empacota uma árvore de pastas num fluxo único, o gzip comprime esse fluxo, e a cadeia se lê da direita para a esquerda. Se você descomprime um .gz simples esperando uma pasta, recebe o arquivo único que foi comprimido — é tudo que o formato guardou.
É uma resposta de servidor web. Praticamente todo servidor web comprime HTML, CSS, JavaScript e JSON com gzip antes de enviar, o navegador descomprime de forma transparente, e nenhum dos dois lados escreve um .gz em lugar nenhum. Isso acontece bilhões de vezes por dia e é invisível.
Esse é o motivo de o gzip estar em toda parte, e por que a velocidade dele importa mais que a taxa de compressão. Um servidor comprimindo uma resposta tem milissegundos, não segundos — um compressor que apertasse dez por cento a mais com dez vezes o esforço seria a troca errada nessa escala, e é exatamente a troca que outros formatos de compressão mais lentos fazem e o gzip recusa.
O gzip usa o algoritmo DEFLATE — busca de repetição contra uma janela de 32 KB, seguida de codificação de Huffman. O mesmo algoritmo comprime cada arquivo dentro de um ZIP e toda imagem PNG, motivo pelo qual esses três formatos têm características de compressão tão parecidas.
A janela de 32 KB é o limite que o define. Repetição mais distante que isso não pode ser encontrada, motivo pelo qual o gzip perde bastante para formatos de compressão mais fortes em arquivos grandes com estrutura de longo alcance — e por que custa tão pouco rodar, já que o espaço de busca é pequeno por desenho.
Jean-loup Gailly e Mark Adler lançaram o gzip em 1992 para substituir a ferramenta compress do Unix, que usava um algoritmo cuja patente a empresa dona começou a fazer valer — a mesma disputa que produziu o PNG como substituto do GIF.
O DEFLATE foi desenhado para ser livre desse ônus, e foi publicado como uma especificação aberta para qualquer um implementar. Essa decisão é o motivo de ele ter acabado dentro do ZIP, do PNG, do HTTP e de incontáveis protocolos: era o compressor bom o suficiente que ninguém precisava pedir permissão para usar.
O gzip oferece níveis de 1 a 9. O nível 1 é rápido e relaxado, o 9 busca com mais afinco, e o 6 é o padrão. A diferença entre 6 e 9 costuma ser poucos por cento de tamanho por um aumento considerável de tempo, uma troca ruim na maioria dos casos.
A velocidade de descompressão é praticamente constante independentemente do nível usado, e é rápida — centenas de megabytes por segundo em hardware comum. Essa assimetria é a característica que define o formato: barato de ler, barato o suficiente de escrever, nunca notável em nenhum dos dois.
O cabeçalho pode carregar o nome original do arquivo, um carimbo de tempo de modificação e um comentário, e uma soma de verificação CRC32 do dado descomprimido fica no final. A soma de verificação significa que corrupção é detectada na descompressão em vez de produzir uma saída silenciosamente errada.
O nome guardado é o motivo de descomprimir às vezes produzir um arquivo com nome diferente do que o .gz tinha. É também um pequeno detalhe de privacidade que vale conhecer: um .gz pode carregar o caminho ou nome original mesmo depois de o arquivo ter sido renomeado para envio.
Juntar dois arquivos gzip com nada além de uma cópia bruta produz um arquivo gzip válido contendo os dois, em ordem. Descompressores lidam com isso sem precisar de aviso.
É por isso que rotação de log, pipelines de streaming e sistemas de coleta de dado dependem disso: um processo consegue anexar trechos comprimidos conforme chegam, sem nunca reescrever ou reler o que veio antes. Nem ZIP nem outros formatos de compressão de arquivo conseguem isso, e é boa parte do motivo de o gzip persistir em infraestrutura.
Alguns formatos de compressão mais recentes comprimem consideravelmente melhor em texto, ao custo de bem mais tempo, o que serve para um lançamento baixado muitas vezes. Outros igualam a velocidade do gzip enquanto comprimem perto do melhor nível, e por isso vêm deslocando o gzip em formato de pacote e sistema de backup.
A vantagem que resta ao gzip é estar presente em toda parte sem precisar ser instalado, configurado ou explicado. Isso não é pouco — mas para um sistema novo, em vez de um já existente, geralmente há uma escolha padrão melhor hoje.
Quando vai para uma pessoa em vez de uma máquina. O ZIP é o que uma instalação padrão de Windows ou macOS abre sem ajuda, e mandar um .tar.gz para um colega que não é técnico é, silenciosamente, pedir para ele resolver um problema.
Não converta quando vai voltar para um sistema Unix. Reempacotar como ZIP descarta permissão, dono e link simbólico que o tar carregava, e o resultado extraído pode não funcionar. Para um backup de servidor ou um lançamento de código-fonte, .tar.gz não é um obstáculo para contornar — é o motivo de o arquivo funcionar.
| Extensão | .gz, .tgz |
|---|---|
| Tipo de mídia | application/gzip |
| Primeira publicação | 1992 |
| Especificação | RFC 1952 |