gzip - gzip

gzip
Gzip-Logo.svg
Autor (es) original (is)
Desenvolvedor (s) Projeto GNU
lançamento inicial 31 de outubro de 1992 ; 28 anos atrás ( 31/10/1992 )
Versão estável
1.11 (GNU Gzip) / 3 de setembro de 2021 ; 43 dias atrás ( 2021-09-03 )
Repositório git .savannah .gnu .org / cgit / gzip .git
Escrito em C
Sistema operacional Semelhante ao Unix , Plan 9 , Inferno
Modelo Compressão de dados
Licença GPLv3
Local na rede Internet www .gnu .org / software / gzip /

gzip é um formato de arquivo e um aplicativo de software usado para compactação e descompactação de arquivos . O programa foi criado por Jean-loup Gailly e Mark Adler como um substituto de software livre para o programa de compressão usado nos primeiros sistemas Unix , e destinado ao GNU (o "g" é de "GNU"). A versão 0.1 foi lançada publicamente em 31 de outubro de 1992, e a versão 1.0 foi lançada em fevereiro de 1993.

A descompressão do formato gzip pode ser implementada como um algoritmo de streaming , um recurso importante para aplicativos de protocolos da Web , intercâmbio de dados e ETL (em canais padrão ).

Formato de arquivo

gzip
Extensão de nome de arquivo
.gz
Tipo de mídia da Internet
aplicativo / gzip
Identificador de tipo uniforme (UTI) org.gnu.gnu-zip-archive
número mágico 1f 8b
Desenvolvido por Jean-loup Gailly e Mark Adler
Tipo de formato Compressão de dados
Formato aberto ? sim
Local na rede Internet gzip .org (obsoleto)

O gzip é baseado no algoritmo DEFLATE , que é uma combinação da codificação LZ77 e Huffman . O DEFLATE foi concebido como um substituto para o LZW e outros algoritmos de compactação de dados sobrecarregados de patente que, na época, limitavam a usabilidade de compactação e outros arquivadores populares.

"gzip" também é frequentemente usado para se referir ao formato de arquivo gzip, que é:

  • um cabeçalho de 10 bytes, contendo um número mágico ( 1f 8b), o método de compactação ( 08para DEFLATE), 1 byte de sinalizadores de cabeçalho, um carimbo de data / hora de 4 bytes, sinalizadores de compactação e o ID do sistema operacional.
  • cabeçalhos extras opcionais conforme permitido pelos sinalizadores de cabeçalho, incluindo o nome do arquivo original, um campo de comentário, um campo "extra" e a metade inferior de uma soma de verificação CRC-32 para a seção do cabeçalho.
  • um corpo, contendo uma carga compactada DEFLATE
  • um rodapé de 8 bytes, contendo uma soma de verificação CRC-32 e o comprimento dos dados originais não compactados, módulo 2 32 .
Targzip.svg

Embora seu formato de arquivo também permita que vários fluxos sejam concatenados (arquivos gzip são simplesmente descompactados e concatenados como se fossem originalmente um único arquivo), o gzip é normalmente usado para compactar apenas arquivos únicos. Os arquivos compactados são normalmente criados reunindo coleções de arquivos em um único arquivo tar (também chamado de tarball ) e, em seguida, compactando esse arquivo com gzip. O arquivo compactado final geralmente tem a extensão .tar.gz ou .tgz .

O gzip não deve ser confundido com o formato de arquivo ZIP , que também usa DEFLATE. O formato ZIP pode conter coleções de arquivos sem um arquivador externo, mas é menos compacto do que tarballs compactados contendo os mesmos dados, porque ele compacta arquivos individualmente e não pode aproveitar a redundância entre os arquivos ( compactação sólida ).

Implementações

NetBSD Gzip / FreeBSD Gzip
Desenvolvedor (s) A Fundação NetBSD
Repositório cvsweb .netbsd .org / bsdweb .cgi / src / usr .bin / gzip /
Escrito em C
Modelo Compressão de dados
Licença Licença BSD simplificada

Várias implementações do programa foram escritas. O mais comumente conhecido é a implementação do Projeto GNU usando a codificação Lempel-Ziv (LZ77). A versão gzip do OpenBSD é na verdade o programa de compactação , ao qual o suporte para o formato gzip foi adicionado no OpenBSD 3.4. O 'g' nesta versão específica significa grátis . FreeBSD , DragonFly BSD e NetBSD usam uma implementação licenciada por BSD em vez da versão GNU; na verdade, é uma interface de linha de comando para zlib destinada a ser compatível com as opções de implementação GNU. Essas implementações vêm originalmente do NetBSD e oferecem suporte à descompactação de bzip2 e do formato Unix pack .

Um programa de compressão alternativo que atinge uma compressão de 3 a 8% melhor é o Zopfli . Ele atinge compactação compatível com gzip usando algoritmos mais exaustivos, ao custo do tempo de compactação necessário. Não afeta o tempo de descompressão.

pigz, escrito por Mark Adler, é compatível com gzip e acelera a compactação usando todos os núcleos e threads de CPU disponíveis.

O gzip usa compressão baseada em blocos com blocos de até 64 kilobytes de acordo com a especificação "BZGF".

Recuperação de danos

Os dados em blocos anteriores à primeira parte danificada do arquivo geralmente são totalmente legíveis. Os dados de blocos não demolidos por danos localizados posteriormente podem ser recuperados por meio de soluções alternativas difíceis.

Derivados e outros usos

O utilitário tar incluído na maioria das distribuições Linux pode extrair arquivos .tar.gz passando a opção z , por exemplo, tar -zxf arquivo.tar.gz .

zlib é uma abstração do algoritmo DEFLATE em forma de biblioteca que inclui suporte para o formato de arquivo gzip e um formato de fluxo de dados leve em sua API. O formato de fluxo zlib, DEFLATE, e o formato de arquivo gzip foram padronizados respectivamente como RFC 1950, RFC 1951 e RFC 1952.

O formato gzip é usado na compressão HTTP , uma técnica usada para acelerar o envio de HTML e outros conteúdos na World Wide Web . É um dos três formatos padrão para compactação HTTP, conforme especificado no RFC 2616. Este RFC também especifica um formato zlib (chamado "DEFLATE"), que é igual ao formato gzip, exceto que o gzip adiciona onze bytes de sobrecarga na forma de cabeçalhos e trailers. Ainda assim, o formato gzip às vezes é recomendado em vez do zlib porque o Internet Explorer não implementa o padrão corretamente e não pode lidar com o formato zlib conforme especificado no RFC 1950.

zlib DEFLATE é usado internamente pelo formato Portable Network Graphics (PNG).

Desde o final da década de 1990, o bzip2 , um utilitário de compactação de arquivos baseado em um algoritmo de classificação de blocos, ganhou alguma popularidade como substituto do gzip. Ele produz arquivos consideravelmente menores (especialmente para código-fonte e outros textos estruturados), mas ao custo de memória e tempo de processamento (até um fator de 4).

AdvanceCOMP e 7-Zip podem produzir arquivos compatíveis com gzip, usando uma implementação DEFLATE interna com taxas de compressão melhores do que o próprio gzip - ao custo de mais tempo de processador em comparação com a implementação de referência.

Veja também

Notas

Referências

  • RFC 1952 - especificação do formato de arquivo GZIP versão 4.3

links externos