Formát archivu GZIP

GZIP je populární formát souborů a softwarová aplikace používaná pro kompresi a dekompresi souborů. Byl vyvinut jako bezplatný a open-source kompresní algoritmus Jean-Loup Gailly a Mark Adler na počátku 90. let. Název „GZIP“ znamená GNU ZIP, což naznačuje jeho spojení s projektem GNU.
Komprese GZIP funguje tak, že zmenšuje velikost souborů, což usnadňuje jejich přenos po sítích nebo ukládání na disk. Dosahuje komprese nahrazením opakovaných řetězců dat odkazy, čímž se snižuje redundance a celková velikost souboru. GZIP je zvláště účinný pro kompresi textových souborů, jako jsou HTML, CSS, JavaScript, XML a JSON, ale lze jej použít i pro kompresi jiných typů souborů.

Informace o archivu GZIP

Informace o archivu GZIP se týkají metadat a dat obsažených v souboru komprimovaném pomocí komprimačního algoritmu GZIP. Archivy GZIP obvykle obsahují informace, jako jsou atributy souborů, časová razítka, metoda komprese a další relevantní data nezbytná pro dekompresi a obnovu souborů. Tato metadata jsou zásadní pro správnou identifikaci a zpracování komprimovaných souborů.
Informace o archivu GZIP mohou navíc obsahovat podrobnosti o samotném procesu komprese, jako je úroveň komprese, kontrolní součty a jakékoli další příznaky nebo možnosti použité během komprese. Tyto informace jsou nezbytné pro zajištění integrity a správnosti komprimovaných dat při jejich dekomprimaci. Celkově je pochopení archivních informací GZIP životně důležité pro efektivní správu a práci s komprimovanými soubory, ať už pro účely ukládání dat, přenos po sítích nebo archivační účely.

Vývoj archivního formátu GZIP

Archivní formát GZIP má své kořeny na konci 80. let, kdy Jean-loup Gailly a Mark Adler vyvinuli kompresní algoritmus GZIP jako součást projektu GNU. GZIP je zkratka pro GNU ZIP, což odráží jeho původ v rámci projektu GNU. Cílem bylo vytvořit komprimační nástroj, který dokáže efektivně zmenšit velikost souborů při zachování kompatibility napříč různými počítačovými systémy.
Jean-loup Gailly a Mark Adler vyvinuli program jako bezplatnou alternativu ke komprimačnímu nástroji, který se nacházel v raných unixových systémech. Byl navržen jako součást projektu GNU, proto to “g” v gzip. Počáteční verze, verze 0.1, byla zpřístupněna veřejnosti 31. října 1992, poté následovala verze 1.0 v únoru 1993.

Struktura GZIP

  • Záhlaví (10 bajtů): Tato část poskytuje základní informace o archivu a jeho obsahu. Zde je rozpis dat záhlaví
  • Magické číslo (4 bajty): Toto identifikuje soubor jako archiv GZIP. Má specifickou hexadecimální hodnotu (1f 8b), kterou dekompresní nástroje rozpoznávají.
  • Metoda komprese (1 bajt): Tento bajt obvykle obsahuje hodnotu 8, což označuje kompresní algoritmus DEFLATE používaný GZIP.
  • Příznaky záhlaví (1 byte): Tyto příznaky řídí specifické aspekty dekomprese, jako je kódování názvu souboru nebo přítomnost komentáře.
  • Čas vytvoření (4 bajty): V této části je uloženo časové razítko Unixu označující čas vytvoření archivu.
  • CRC-32 (4 bajty): Tato hodnota Cyclic Redundancy Check se používá pro detekci chyb během dekomprese. Vypočítává se na základě nekomprimovaných dat a umožňuje dekomprimačnímu softwaru ověřit integritu extrahovaných souborů.

GZIP využívá algoritmus DEFLATE, který spojuje techniky kódování LZ77 a Huffman. DEFLATE byl vyvinut, aby nahradil LZW a další kompresní algoritmy zatížené patenty, které omezovaly efektivitu komprese a podobných archivačních nástrojů, které v té době převládaly. Formát souboru GZIP má dobře definovanou strukturu sestávající ze tří hlavních částí:

Výhody tohoto formátu

  • Bezztrátová komprese: GZIP komprimuje data bez ztráty informací. Na rozdíl od některých komprimačních technik lze původní soubory po dekompresi dokonale rekonstruovat. To je zásadní pro důležité dokumenty, obrázky nebo kód, kde je zásadní zachování integrity dat.
  • Široká kompatibilita: Jednou z největších předností GZIP je jeho široké přijetí. Je podporován většinou operačních systémů, archivačních nástrojů (WinRAR, 7-Zip) a webových serverů. To zajišťuje, že můžete snadno otevřít soubory GZIP na různých platformách, aniž byste potřebovali specifický software. GZIP je také široce podporován v různých operačních systémech, včetně systémů založených na Unixu, Linuxu, Windows a macOS. Tato kompatibilita mezi platformami zajišťuje, že soubory komprimované GZIP lze bez problémů vytvářet a dekomprimovat v různých prostředích.
  • Streamable Compression: GZIP podporuje kompresi streamu, což umožňuje soubory komprimovat nebo dekomprimovat za běhu, aniž byste museli čekat na zpracování celého souboru. Díky tomu je vhodný pro scénáře, kde jsou data generována nebo přenášena nepřetržitě, jako je síťová komunikace a operace zálohování dat.
  • Otevřený standard: GZIP je otevřený a široce přijímaný standard pro kompresi souborů, jehož specifikace jsou veřejně dostupné. Tato otevřenost podporuje interoperabilitu a kompatibilitu mezi různými softwarovými aplikacemi a systémy a podporuje živý ekosystém nástrojů a knihoven pro práci se soubory komprimovanými GZIP. Použití GZIP je obecně jednoduché. Mnoho nástrojů a softwaru automaticky komprimuje nebo dekomprimuje soubory v tomto formátu. Proces dekomprese je navíc efektivní a vyžaduje minimální zdroje.

Operace podporované archivem GZIP

Aspose.ZIP umožňuje uživateli extrahovat buď konkrétní položku nebo celý archiv. Pro Aspose.ZIP for .NET Můžete použít GzipArchiveClass k otevření souboru .gz a poté iterovat jeho záznamy a extrahovat je do požadovaného umístění. Pro Aspose.ZIP for Java Podobný přístup pomocí GzipArchive k otevření souboru .gz a extrahování položek.

GZIP-file - Vnitřní struktura

Archiv GZIP je jako úhledně zabalený balíček. Začíná 10bajtovým záhlavím, které představuje formát a metodu komprese. Srdce leží v sekci komprimovaných dat, zmenšené pomocí chytrých algoritmů. Nakonec 8bajtová zápatí ověřuje integritu dat pomocí kontrolních součtů a zajišťuje, že vaše soubory po dekompresi dorazí bezpečně.

GZIP-file - Vnitřní struktura

Vnitřní struktura archivu

  • Metadata souboru - Podobně jako archiv tar, každý soubor ukládá základní informace, jako je čas úpravy a oprávnění. Tato část je však flexibilní a umožňuje vynechat nebo zahrnout další podrobnosti, jako jsou seznamy řízení přístupu (ACL) nebo rozšířené atributy (EA), na základě vašich potřeb. Pro zajištění integrity dat se doporučuje zahrnout silnou hashovací funkci (jako SHA1) pro běžné soubory.
  • Více toků obsahu - Na rozdíl od tradičních archivů mohou mít soubory ve vnitřním datovém souboru více než jeden datový tok. To je užitečné pro ukládání rozšířených atributů nebo větví prostředků spojených se souborem.
  • Záhlaví - Vnitřní indexový soubor obsahuje záhlaví souborů, která zrcadlí ty, které jsou rozptýleny ve vnitřním datovém souboru. Ale pokud jsou uloženy odděleně, záhlaví indexu musí odkazovat na počáteční pozici jejich odpovídajících dat v datovém souboru. Kromě toho položky adresáře v indexu vypisují obsažené soubory a jejich odpovídající offsety v rámci vnitřního indexu souborů.
  • Odůvodnění duplicitních metadat - Tato volba designu zajišťuje efektivní streamování/dekódování dat a náhodný přístup k souborům. Navíc se metadata dobře komprimují, což vede k minimální režii úložiště. Testy ukazují, že metadata obvykle zabírají méně než 0,3 % úložného prostoru, takže kompromis se vyplatí.
  • Záhlaví bloků - Záhlaví bloků, podobně jako vnější soubor, obsahuje informace o velikosti bloku a unikátní sekvenci identifikátorů.

Příklady použití GZIP

Aspose.ZIP API umožňuje extrahovat archivy ve vašich aplikacích bez potřeby dalších aplikací třetích stran. Aspose.ZIP API poskytuje třídu GzipArchive pro práci s archivy 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”);
        }
    }

Aspose.Zip offers individual archive processing APIs for popular development environments, listed below:

Aspose.Zip for .NETAspose.Zip via JavaAspose.Zip via Python.NET

Další informace o archivech GZIP

Lidé se ptali

1. Co je GZIP?

GZIP (GNU zip archiv) je populární formát souborů, který zmenšuje velikost souborů pro snadnější ukládání a přenos.

2. Jaká je komprese GZIP ve srovnání s jinými formáty, jako je ZIP?

GZIP obvykle nabízí vyšší kompresní poměry ve srovnání se ZIP, zejména při komprimaci textových souborů. Archivy ZIP však často obsahují podporu pro více souborů a adresářů, díky čemuž jsou univerzálnější pro balení více souborů dohromady. .

3. Může GZIP komprimovat více souborů do jednoho archivu?

GZIP je navržen tak, aby komprimoval jeden soubor, nikoli více souborů nebo adresářů. Je však běžné používat nástroje jako tar v kombinaci s GZIP k vytvoření tarballu tar archive a poté komprimujte jej pomocí GZIP a vytvořte jeden komprimovaný soubor.