Formát archivu XZ

XZ je formát archivu s vysokou komprimací primárně používaný pro kompresi jednotlivých souborů, který nabízí vynikající účinnost komprese a kompatibilitu s otevřeným zdrojovým kódem. Tento formát, vyvinutý jako součást XZ Utils, je známý svým použitím kompresního algoritmu LZMA2, který dosahuje vysokých kompresních poměrů při zachování rozumné rychlosti dekomprese. Archivy XZ jsou široce používány při distribuci softwarových balíčků, zejména v operačních systémech podobných Unixu, jako je Linux.

Obecné informace o archivu XZ

archivy XZ jsou navrženy tak, aby poskytovaly účinnou kompresi se zaměřením na zmenšení velikosti souborů pro ukládání a distribuci. Formát používá algoritmus LZMA2, který kombinuje slovníkovou kompresi a entropické kódování, díky čemuž je vysoce účinný pro kompresi velkých souborů. Archivy XZ obvykle obsahují jeden komprimovaný soubor, ale lze je kombinovat s jinými nástroji, jako je tar, pro komprimaci celých adresářů. Formát XZ se často používá při distribuci softwaru, zálohování dat a archivaci, zejména v ekosystému Linuxu, kde se stal standardem pro balení softwaru a aktualizací systému.

Informace o historii XZ

  • 2005: Formát XZ se začal vyvíjet v rámci projektu XZ Utils, jehož cílem bylo vytvořit efektivnějšího nástupce staršího formátu LZMA.
  • 2009: Oficiálně byly vydány XZ Utils, které představily formát XZ jako nový standard pro potřeby vysoké komprese.
  • 2010: XZ začal získávat na popularitě v linuxové komunitě a rychle se stal preferovaným formátem pro kompresi softwarových balíků a systémových archivů.
  • 2011: Hlavní linuxové distribuce, včetně Debianu a Arch Linuxu, začaly přijímat XZ jako výchozí kompresní formát pro své repozitáře balíčků.
  • 2014: Využití XZ se rozšířilo mimo Linux a stalo se oblíbeným pro multiplatformní distribuci softwaru, zejména pro aplikace vyžadující vysoké kompresní poměry.
  • 2020: XZ zůstává široce používán v balení softwaru, ukládání dat a distribuci, zejména v prostředích, kde je efektivní komprese zásadní.

Struktura archivu XZ

  1. Záhlaví: Záhlaví obsahuje metadata o archivu XZ, včetně verze formátu, příznaků a případných použitých volitelných rozšíření. Označuje také přítomnost kontrolních součtů pro integritu dat.
  2. Komprimovaný datový tok: Jádrem archivu XZ je komprimovaný datový tok. Tato část obsahuje aktuální data souboru komprimovaná pomocí algoritmu LZMA2. Datový tok je rozdělen do bloků, což umožňuje efektivní kompresi a dekompresi. Každý blok lze nezávisle dekomprimovat, což pomáhá při obnově dat, i když je archiv částečně poškozen.
  3. Zápatí: Zápatí obsahuje kontrolní součet CRC32, který ověřuje integritu archivu. Označuje také konec komprimovaného datového toku a může obsahovat další informace, jako je index bloků pro rychlý přístup.

Formát archivu XZ je navržen pro kompresi jednoho souboru a používá přímou strukturu k dosažení vysokých kompresních poměrů. Zde je přehled struktury archivu XZ:

XZ kompresní metody

Formát XZ primárně spoléhá na kompresní algoritmus LZMA2, který je známý svým vysokým kompresním poměrem a rozumnou rychlostí dekomprese. Zde je bližší pohled na kompresní metody spojené s XZ:

  1. LZMA2: Toto je výchozí a jediná metoda komprese používaná archivy XZ. LZMA2 staví na algoritmu LZ77 a zahrnuje pokročilé entropické kódování, díky čemuž je vysoce efektivní při kompresi velkých souborů. Nabízí nastavitelná nastavení komprese, což uživatelům umožňuje upřednostnit rychlost nebo poměr komprese v závislosti na jejich potřebách.
  2. Filtry: Kromě LZMA2 podporuje XZ různé volitelné filtry, které lze použít před kompresí pro další snížení velikosti souboru. Patří mezi ně delta kódování, které je užitečné pro kompresi dat s malými, opakovanými změnami, a BCJ (Branch/Call/Jump), které optimalizuje kompresi spustitelného kódu transformací určitých instrukcí do komprimovatelnějších forem.
  3. Kontrolní součty CRC32 a SHA-256: I když se nejedná o kompresní metody samy o sobě, archivy XZ používají kontrolní součty CRC32 pro kontroly integrity a volitelně podporují SHA-256 pro vylepšené ověřování dat, což zajišťuje, že komprimovaná data nebyla poškozena nebo s nimi manipulováno.

Podporované operace .xz

Aspose.Zip nabízí komplexní podporu pro práci s archivy .xz, což usnadňuje správu komprimovaných souborů. Zde je to, co můžete udělat:

  • Úplná extrakce: Snadno extrahujte všechny soubory z archivu .xz, přičemž zachováte integritu a strukturu původního obsahu.
  • Selektivní extrakce: Zaměřte se na konkrétní soubory v archivu .xz, což umožňuje přesnou obnovu dat nebo selektivní dekompresi na základě názvů souborů nebo jiných kritérií.
  • Komprese dat: Vytvářejte archivy .xz ze souborů a adresářů s využitím účinné metody komprese LZMA2 k výraznému snížení velikosti souborů.
  • Vlastní nastavení komprese: Upravte úrovně komprese a další parametry pro vyvážení mezi rychlostí komprese a velikostí souboru a přizpůsobte proces svým konkrétním potřebám.

Struktura souboru .XZ

Formát souboru .xz se primárně používá pro kompresi a balení dat. K dosažení vysokých kompresních poměrů využívá algoritmus LZMA2. Zde je přehled struktury archivu .xz:

  1. Záhlaví streamu:

    • Magické bajty: Prvních 6 bajtů (FD 37 7A 58 5A 00) identifikuje soubor jako archiv .xz.
    • Příznaky streamu: Obsahuje podrobnosti, jako je velikost bloku a možnosti komprese.
  2. Záhlaví bloku:

    • Velikost bloku: Označuje velikost bloku, který následuje.
    • Metoda komprese: Určuje použitý algoritmus (obvykle LZMA2).
    • Řetězce filtrů: Podrobnosti o všech dalších filtrech použitých před nebo po kompresi.
  3. Komprimované datové bloky:

    • Data: Skutečná data komprimovaná pomocí algoritmu LZMA2.
    • CRC32: Kontrolní součet používaný k ověření integrity komprimovaných dat.
  4. Sekce indexu:

    • Indexová data: Poskytuje posuny pro každý blok a nekomprimovanou velikost, což umožňuje náhodný přístup v komprimovaném proudu.
    • Index CRC32: Zajišťuje integritu sekce indexu.
  5. Zápatí streamu:

    • Příznaky toku: Opakuje příznaky toku ze záhlaví pro účely ověření.
    • Backward Size: Velikost sekce indexu umožňující zpětné procházení souboru.
    • Magic Bytes: Soubor končí 2bajtovou sekvencí (59 5A), která značí konec archivu .xz.
  6. Volitelná metadata:

    • Některé archivy .xz mohou obsahovat další metadata pro speciální funkce nebo rozšířené funkce, jako jsou vlastní filtry nebo šifrování.

Struktura souboru .XZ

Popularita formátu XZ

Souborový formát .xz si získal značnou oblibu, zejména v komunitách Linuxu a open-source, díky vysokému kompresnímu poměru a efektivnímu využívání zdrojů. Je široce používán pro kompresi softwarových balíků, distribuci zdrojového kódu a archivaci velkých datových sad. Sada nástrojů XZ Utils poskytuje robustní podporu pro vytváření, extrahování a správu souborů .xz na různých platformách, včetně Linuxu, macOS a Windows. Ačkoli není v prostředí Windows tak široce používán jako ZIP nebo CAB , .xz je oceňován pro svou rovnováhu mezi účinností komprese a výkonem, což z něj činí preferovanou volbu pro vývojáře a systémové administrátory. Navíc je .xz integrován do mnoha systémů pro správu balíčků, jako je Debian APT a Pacman Arch Linuxu, což dále upevňuje jeho roli v ekosystému distribuce softwaru.

Příklady použití XZ archivů

Tato část obsahuje příklady kódu demonstrující, jak komprimovat a dekomprimovat archivy XZ pomocí C# a Java. Tyto příklady využívají k interakci se soubory XZ knihovny jako Aspose.Zip pro C# a vestavěnou třídu XzArchive (v závislosti na prostředí Java).

Compress XZ File via C#

    using (FileStream xzFile = File.Open("data.bin.xz", FileMode.Create))
    {
        using (FileStream source = File.Open("data.bin", FileMode.Open, FileAccess.Read))
        {
            using (var archive = new XzArchive(Aspose.Zip.Xz.Settings.XzArchiveSettings.FastestSpeed))
            {
                archive.SetSource(source);
                archive.Save(xzFile);
            }
        }
    }

Open XZ Archive via C#

    using (var archive = new XzArchive("data.bin.xz"))
    {
        archive.Extract("data.bin");
    }

Compress XZ File via C#

    try (FileOutputStream xzFile = new FileOutputStream("data.bin.xz")) {
        try (FileInputStream source = new FileInputStream("data.bin")) {
            try (XzArchive archive = new XzArchive(XzArchiveSettings.getFastestSpeed())) {
                archive.setSource(source);
                archive.save(xzFile);
            }
        }
    } catch (IOException ex) {
    }

Open XZ Archive via Java

    try (XzArchive archive = new XzArchive("data.bin.xz")) {
        archive.extract("data.bin");
    }

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

Lidé se ptali

1. Je .xz podporován ve všech operačních systémech?

Zatímco .xz se nejčastěji používá v prostředí Linuxu, je podporován ve všech hlavních operačních systémech. Nástroje jako XZ Utils jsou k dispozici pro Windows a macOS a podporují také nástroje pro více platforem, jako je 7-Zip . soubory .xz.

2. Jaké jsou výhody používání souborů XZ?

Soubory XZ nabízejí několik výhod, včetně vysokých kompresních poměrů, efektivního využití systémových prostředků a kompatibility mezi platformami. Běžně se používají pro archivaci velkých datových sad, distribuci softwarových balíků a zálohování dat.

3. Mohu komprimovat více souborů do jednoho archivu .xz?

Na rozdíl od formátů jako ZIP nebo [TAR](/zip/cs/většina -common-archives/what-is-tar/), .xz se obvykle používá ke kompresi jednoho souboru. Pokud chcete komprimovat více souborů, musíte je nejprve archivovat do jednoho souboru (pomocí Aspose.Zip API , abyste vytvořili soubor .tar ) a poté zkomprimujte archiv pomocí .xz, čímž vznikne soubor .tar.xz.