Formato de arquivo GZIP
GZIP é um formato de arquivo e aplicativo de software popular usado para compactação e descompactação de arquivos. Foi desenvolvido como um algoritmo de compressão gratuito e de código aberto por Jean-Loup Gailly e Mark Adler no início dos anos 1990. O nome “GZIP” significa GNU ZIP, indicando sua associação com o Projeto GNU.
A compactação GZIP reduz o tamanho dos arquivos, facilitando sua transferência em redes ou armazenamento em disco. Ele consegue compactação substituindo sequências repetidas de dados por referências, reduzindo assim a redundância e o tamanho geral do arquivo. GZIP é particularmente eficiente para compactar arquivos baseados em texto como HTML, CSS, JavaScript, XML e JSON, mas também pode ser usado para compactar outros tipos de arquivos.
Sobre as informações do arquivo GZIP
As informações do arquivo GZIP referem-se aos metadados e dados contidos em um arquivo compactado usando o algoritmo de compactação GZIP. Os arquivos GZIP normalmente incluem informações como atributos de arquivo, carimbos de data/hora, método de compactação e outros dados relevantes necessários para descompactação e restauração de arquivos. Esses metadados são cruciais para identificar e processar adequadamente os arquivos compactados.
Além disso, as informações do arquivo GZIP também podem incluir detalhes sobre o próprio processo de compactação, como nível de compactação, somas de verificação e quaisquer sinalizadores ou opções adicionais usadas durante a compactação. Esta informação é essencial para garantir a integridade e exatidão dos dados compactados ao descompactá-los. No geral, compreender as informações do arquivo GZIP é vital para gerenciar e trabalhar de forma eficaz com arquivos compactados, seja para armazenamento de dados, transmissão por redes ou para fins de arquivamento.
Evolução do formato de arquivo GZIP
O formato de arquivo GZIP tem suas raízes no final da década de 1980, quando Jean-loup Gailly e Mark Adler desenvolveram o algoritmo de compressão GZIP como parte do projeto GNU. GZIP significa GNU ZIP, refletindo suas origens no projeto GNU. O objetivo era criar uma ferramenta de compactação que pudesse reduzir com eficiência o tamanho dos arquivos e, ao mesmo tempo, manter a compatibilidade entre diferentes sistemas de computador.
Jean-loup Gailly e Mark Adler desenvolveram o programa como uma alternativa gratuita ao utilitário compress encontrado nos primeiros sistemas Unix. Ele foi projetado para fazer parte do projeto GNU, daí o “g” em gzip. A versão inicial, versão 0.1, tornou-se disponível ao público em 31 de outubro de 1992, seguida pela versão 1.0 em fevereiro de 1993.
Estrutura GZIP
GZIP utiliza o algoritmo DEFLATE, que mescla as técnicas de codificação LZ77 e Huffman. DEFLATE foi desenvolvido para substituir o LZW e outros algoritmos de compactação sobrecarregados por patentes, que restringiam a eficácia da compactação e utilitários de arquivamento semelhantes predominantes na época. O formato de arquivo GZIP segue uma estrutura bem definida composta por três partes principais:
- Cabeçalho (10 bytes): Esta seção fornece informações essenciais sobre o arquivo e seu conteúdo. Aqui está um detalhamento dos dados do cabeçalho
- Número Mágico (4 bytes): Isto identifica o arquivo como um arquivo GZIP. Possui um valor hexadecimal específico (1f 8b) que as ferramentas de descompressão reconhecem.
- Método de compactação (1 byte): Este byte normalmente contém o valor 8, indicando o algoritmo de compactação DEFLATE usado pelo GZIP.
- Sinalizadores de cabeçalho (1 byte): Esses sinalizadores controlam aspectos específicos da descompactação, como codificação de nome de arquivo ou a presença de um comentário.
- Hora de criação (4 bytes): Esta seção armazena um carimbo de data/hora Unix indicando a hora em que o arquivo foi criado.
- CRC-32 (4 bytes): Este valor de verificação de redundância cíclica é usado para detecção de erros durante a descompressão. É calculado com base nos dados descompactados e permite que o software de descompactação verifique a integridade dos arquivos extraídos.
Benefícios deste formato
- Compactação sem perdas: GZIP compacta dados sem qualquer perda de informações. Ao contrário de algumas técnicas de compressão, os arquivos originais podem ser perfeitamente reconstruídos após a descompressão. Isso é crucial para documentos, imagens ou códigos importantes onde a manutenção da integridade dos dados é essencial.
- Ampla compatibilidade: Um dos maiores pontos fortes do GZIP é sua ampla adoção. É compatível com a maioria dos sistemas operacionais, utilitários de arquivamento (WinRAR, 7-Zip) e servidores web. Isso garante que você possa abrir facilmente arquivos GZIP em várias plataformas sem a necessidade de software específico. Além disso, o GZIP é amplamente suportado em vários sistemas operacionais, incluindo sistemas baseados em Unix, Linux, Windows e macOS. Essa compatibilidade entre plataformas garante que os arquivos compactados com GZIP possam ser criados e descompactados perfeitamente em diferentes ambientes.
- Compactação Streamable: GZIP suporta compactação de stream, permitindo que os arquivos sejam compactados ou descompactados dinamicamente sem a necessidade de esperar que o arquivo inteiro seja processado. Isso o torna adequado para cenários onde os dados são gerados ou transmitidos continuamente, como comunicações de rede e operações de backup de dados.
- Padrão Aberto: GZIP é um padrão aberto e amplamente adotado para compactação de arquivos, com especificações disponíveis publicamente. Esta abertura incentiva a interoperabilidade e compatibilidade entre diferentes aplicações e sistemas de software, promovendo um ecossistema vibrante de ferramentas e bibliotecas para trabalhar com arquivos compactados GZIP. Utilizar o GZIP geralmente é simples. Muitas ferramentas e softwares compactam ou descompactam arquivos automaticamente neste formato. Além disso, o processo de descompressão é eficiente e requer recursos mínimos.
Operações suportadas pelo arquivo GZIP
Aspose.ZIP permite ao usuário extrair uma entrada específica ou um arquivo inteiro. Para Aspose.ZIP for .NET Você pode usar o GzipArchiveClass para abrir o arquivo .gz e, em seguida, iterar por suas entradas, extraindo-as para um local desejado. Para Aspose.ZIP para Java Abordagem semelhante usando o GzipArchive para abrir o arquivo .gz e extrair entradas.
Arquivo GZIP - Estrutura Interna
O arquivo GZIP é como um pacote bem embrulhado. Ele começa com um cabeçalho de 10 bytes apresentando o formato e o método de compactação. O coração está na seção de dados compactados, reduzidos por meio de algoritmos inteligentes. Por fim, um rodapé de 8 bytes verifica a integridade dos dados com somas de verificação, garantindo que seus arquivos cheguem com segurança após a descompactação.
Estrutura interna do arquivo
- Metadados do arquivo - Semelhante a um arquivo tar, cada arquivo armazena informações básicas como horário de modificação e permissões. No entanto, esta seção é flexível e permite omitir ou incluir detalhes adicionais como listas de controle de acesso (ACLs) ou atributos estendidos (EAs) com base em suas necessidades. É recomendado incluir uma função hash forte (como SHA1) para arquivos regulares para garantir a integridade dos dados.
- Vários fluxos de conteúdo - Ao contrário dos arquivos tradicionais, os arquivos podem ter mais de um fluxo de dados dentro do arquivo de dados interno. Isso é útil para armazenar atributos estendidos ou bifurcações de recursos associadas ao arquivo.
- Cabeçalhos - O arquivo de índice interno contém cabeçalhos de arquivo, espelhando aqueles espalhados pelo arquivo de dados interno. Mas, quando armazenados separadamente, os cabeçalhos do índice devem fazer referência à posição inicial dos dados correspondentes no arquivo de dados. Além disso, as entradas de diretório no índice listam os arquivos contidos e seus deslocamentos correspondentes no índice de arquivo interno.
- Justificativa para metadados duplicados - Esta escolha de design garante fluxo/decodificação eficiente de dados e acesso aleatório a arquivos. Além disso, os metadados são bem compactados, resultando em sobrecarga mínima de armazenamento. Os testes mostram que os metadados normalmente ocupam menos de 0,3% do espaço de armazenamento, fazendo com que a compensação valha a pena.
- Cabeçalhos de bloco - Os cabeçalhos de bloco, semelhantes ao arquivo externo, contêm informações de tamanho de bloco e uma sequência de identificador exclusiva.
Exemplos de uso de GZIP
A API Aspose.ZIP permite extrair arquivos em seus aplicativos sem a necessidade de quaisquer outros aplicativos de terceiros. A API Aspose.ZIP fornece a classe GzipArchive para trabalhar com arquivos GZIP.
GZIP with compress only single source via C#
Such archives like GZIP, LZ, BZIP2, XZ, Z do not support entries and can compress only single source. See samples with such a compression.
using (FileStream source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
{
using (GzipArchive archive = new GzipArchive())
{
archive.SetSource(source);
archive.Save(«archive.gz”);
}
}
![]() | ![]() | ![]() |
---|
Informações adicionais sobre arquivos GZIP
As pessoas têm perguntado
1. O que é GZIP?
GZIP (arquivo compactado GNU) é um formato de arquivo popular que reduz o tamanho dos arquivos para facilitar o armazenamento e a transmissão.
2. Como a compactação GZIP se compara a outros formatos como ZIP?
O GZIP normalmente oferece taxas de compactação mais altas em comparação ao ZIP, especialmente ao compactar arquivos baseados em texto. No entanto, os arquivos ZIP geralmente incluem suporte para vários arquivos e diretórios, tornando-os mais versáteis para empacotar vários arquivos juntos .
3. O GZIP pode compactar vários arquivos em um único arquivo?
GZIP foi projetado para compactar um único arquivo, não vários arquivos ou diretórios. No entanto, é comum usar ferramentas como tar em combinação com GZIP para criar um tarball arquivo tar e então compacte-o usando GZIP para criar um único arquivo compactado.