Formát archivu LZ

LZ je archivní formát navržený pro účinnou kompresi dat, primárně využívaný v prostředích, kde je kritické snížení úložného prostoru a optimalizace přenosu dat. Tento formát, který využívá kompresní algoritmus Lempel-Ziv (LZ), je známý svou schopností komprimovat velké objemy dat se zaměřením na rychlost a efektivitu zdrojů. Archivy LZ jsou obzvláště oblíbené ve scénářích, které vyžadují rychlé kompresní a dekompresní cykly, díky čemuž jsou vhodné jak pro distribuci softwaru, tak pro zpracování dat v reálném čase.

Obecné informace o archivu LZ

archivy LZ jsou komprimované formáty souborů, které jako primární metodu komprese využívají algoritmus Lempel-Ziv. Archivy LZ, známé svou rychlostí a jednoduchostí, upřednostňují účinnou kompresi před maximálními kompresními poměry. Díky tomu jsou vhodné pro aplikace vyžadující rychlou kompresi a dekompresi, jako je zpracování dat v reálném čase nebo vestavěné systémy. Přípona .lz je nejběžnější přípona komprimovaných souborů LZ. Archivy hile LZ nabízejí rychlou kompresi, jejich omezení z hlediska kompresního poměru a metadat je činí méně vhodnými pro archivaci velkých datových sad nebo zachování atributů souborů. Moderní kompresní formáty jako ZIP, gzip a XZ nahradily LZ v mnoha aplikacích díky jejich vylepšeným funkcím a výkonu.

Historie archivů LZ

  • 1977: Základ pro kompresi LZ položili izraelští počítačoví vědci Abraham Lempel a Jacob Ziv, kteří představili algoritmus LZ77. Toto byl první široce přijatý algoritmus pro bezeztrátovou kompresi dat, využívající posuvné okno ke kompresi opakujících se vzorů dat.
  • 1978: Lempel a Ziv představili algoritmus LZ78, vylepšení oproti LZ77, který využíval přístup založený na slovníku. Tento algoritmus dále zvýšil účinnost komprese a inspiroval mnoho následných kompresních technik.
  • 1984: Terry Welch stavěl na algoritmu LZ78 k vývoji LZW (Lempel-Ziv-Welch), který se stal popularizován díky jeho použití v unixovém příkazu komprese a formátu obrázku GIF. LZW byl jedním z prvních široce používaných kompresních algoritmů v komerčních aplikacích.
    1. léta: Varianty algoritmu LZ se nadále vyvíjely, což vedlo k vývoji pokročilejších kompresních metod jako LZMA (algoritmus řetězce Lempel-Ziv-Markov) používaných ve formátech jako 7z a XZ , které nabízejí vyšší kompresní poměry.
  • 2000: Techniky komprese založené na LZ, zejména LZW, se staly součástí mnoha formátů souborů a protokolů, ačkoli některé, jako GIF, se setkaly s problémy souvisejícími s patenty, které ovlivnily jejich použití.
  • 2010: Algoritmy založené na LZ, zejména LZMA a jeho varianty, zůstávají základem moderního kompresního softwaru a vyvažují vysokou účinnost komprese s přiměřeným výkonem. Nadále jsou široce používány v distribuci softwaru, archivaci a ukládání dat.
  • 2020: Formát LZ je i nadále spolehlivou a efektivní volbou pro kompresi, zejména v prostředích, kde je prioritou rychlost a jednoduchost.

Charakteristika archivu LZ

  • Komprese jednoho souboru: Obvykle komprimuje jeden soubor do archivu .lz.
  • Algoritmus LZW: Využívá kompresní metodu Lempel-Ziv-Welch.
  • Nedostatek metadat: V archivu jsou uložena omezená nebo žádná metadata o původním souboru.
  • Jednoduchost: Přímá struktura formátu přispívá k rychlé kompresi a dekompresi.

Formát archivu LZ se drží přímočaré struktury a upřednostňuje rychlost před rozsáhlými funkcemi. Zde je důležitá základní struktura archivu LZ pro práci se starými komprimovanými soubory a hodnocení vývoje kompresních technologií.

LZ Archives kompresní metody

Archivní formát LZ využívá algoritmus Lempel-Ziv (LZ), který je známý svou jednoduchostí a rychlostí, což z něj činí preferovanou volbu ve scénářích, kde je důležitá rychlá komprese a dekomprese. Níže je uveden přehled kompresních metod spojených s LZ:

  1. Algoritmus Lempel-Ziv: Jádro formátu archivu LZ je založeno na algoritmu LZ, metodě bezztrátové komprese, která identifikuje a eliminuje redundanci v datech nahrazením opakovaných sekvencí kratšími kódy. Algoritmus LZ funguje tak, že při zpracování dat vytváří slovník sekvencí, což umožňuje efektivní kompresi velkých a opakujících se souborů dat. Tato metoda je zvláště účinná ve scénářích, kde jsou datové vzory konzistentní a předvídatelné.
  2. Technika posuvného okna: Algoritmus LZ typicky využívá mechanismus posuvného okna, kde se po vstupním datovém toku pohybuje okno s pevnou velikostí, aby našlo opakované sekvence. Tento přístup umožňuje algoritmu udržovat zvládnutelnou velikost slovníku a přitom stále dosahovat značné komprese. Posuvné okno je nástrojem pro vyvážení účinnosti komprese s využitím paměti, díky čemuž je metoda LZ vhodná pro systémy s omezenými zdroji.
  3. Kontrolní součet a detekce chyb: I když se formát LZ zaměřuje na kompresi, může také zahrnovat základní mechanismy kontrolního součtu, jako je CRC32, aby byla zajištěna integrita komprimovaných dat. Tyto kontrolní součty pomáhají odhalit chyby, ke kterým může dojít během ukládání nebo přenosu, a zajišťují, že dekomprimovaná data zůstanou přesná a nepoškozená.
  4. Volitelná vylepšení: V některých implementacích může být metoda komprese LZ vylepšena dalšími technikami, jako je run-length encoding (RLE) nebo delta kódování, které mohou dále snížit velikost komprimovaných dat. Tato volitelná vylepšení se aplikují na konkrétní typy dat v archivu, což umožňuje efektivnější kompresi určitých typů obsahu, jako jsou obrázky nebo spustitelný kód.

Podporované operace .lz

  • Úplná extrakce: Snadno extrahujte všechny soubory z archivu .lz a zachováte integritu a strukturu původního obsahu.
  • Selektivní extrakce: Zaměřte se na konkrétní soubory v archivu .lz, 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 .lz 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.

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

Struktura souboru .LZ

Archivní formát Lzip je navržen se zaměřením na efektivitu a rychlost, využívá vrstvenou strukturu, která usnadňuje rychlou kompresi a dekompresi. Archiv Lzip se skládá z jednoho nebo několika členů uložených v archivu jeden po druhém. Struktura člena Lzip zahrnuje následující komponenty:

  1. Záhlaví bloku:

    • Magické číslo: Jedinečný identifikátor, který signalizuje začátek archivu Lzip a zajišťuje, že soubor bude rozpoznán jako platný formát Lzip.
    • Informace o verzi: Označuje použitou verzi Lzip, což pomáhá zajistit další kompatibilitu s různými dekompresními nástroji. Nyní má hodnotu “1”.
    • Dictionary Size: Toto pole poskytuje informace o podrobnostech komprese LZMA použité pro nadcházející datový blok.
  2. Blok komprimovaných dat:

    • Compressed Payload: Jádro archivu LZ, tato sekce obsahuje komprimovaný datový tok. Algoritmus řetězce Lempel-Ziv-Markov zpracovává původní data do řady kódů, které představují opakované sekvence, čímž se výrazně snižuje velikost souboru. Stejný kompresní algoritmus je podporován ve formátech xz a 7z.
  3. Blokovat zápatí:

    • Kontrolní součet/Hash: Kontrolní součet (jako CRC32) nebo kryptografický hash (jako SHA-256) je zahrnut pro ověření integrity komprimovaných dat. Tím je zajištěno, že během přenosu nebo ukládání do archivu nebylo zasahováno nebo s ním nebylo poškozeno.
    • Velikost dat: Velikost části původního souboru komprimovaného v tomto bloku.
    • Memder Size: část distribuovaného indexu s komprimovanou velikostí a offsetem, která umožňuje extrahovat bloky nezávisle.

Vzhledem k tomu, že formát Lzip nekomprimuje více souborů a neukládá jeho metadata, často se používá s kombinovaným nástrojem tar.

Struktura souboru .LZ

Popularita formátu LZ

Archivní formát LZ, založený na kompresním algoritmu Lempel-Ziv, byl základní technologií ve světě komprese dat. Jeho široké přijetí je přičítáno jeho jednoduchosti, efektivitě a schopnosti dosáhnout významných kompresních poměrů, zejména pro data s opakujícími se vzory. Kompresní metody založené na LZ byly začleněny do různých formátů souborů a kompresních nástrojů, díky čemuž je formát LZ všestrannou a nezbytnou součástí v procesech ukládání, přenosu a archivace dat. Přestože se objevily novější kompresní algoritmy jako LZMA a Brotli, formát LZ zůstává relevantní díky vyváženosti rychlosti komprese a účinnosti.
V prostředích UNIX a Linux se komprese LZ často používá ve spojení s dalšími nástroji, jako je tar, vytvářet komprimované archivy pro distribuci softwaru a zálohování dat. Jeho integrace do mnoha komprimačních nástrojů zajistila jeho trvalé používání na různých platformách, včetně Windows a macOS. Zatímco formát LZ nemusí být tak široce uznáván jako jiné kompresní formáty, jako je ZIP nebo GZIP, jeho vliv na technologii komprese dat je nepopiratelný a nadále se používá v různých scénářích, kde je nutná rychlá a spolehlivá komprese.

Příklady použití archivů LZ

Tato část obsahuje příklady kódu demonstrující, jak komprimovat a otevírat archivy LZ pomocí C#, Java a Python.NET. Tyto příklady využívají ke správě souborů LZ knihovny a třídy, jako je LzipArchive, což ilustruje praktické použití komprese LZ v moderních programovacích prostředích.

Compresses a file into .LZ archive using the LzipArchive class in C#.

    using (LzipArchive archive = new LzipArchive())
    {
        archive.SetSource("data.bin");
        archive.Save("data.bin.lz");
    }

Extract LZip Archive using C#

    using (FileStream sourceLzipFile = File.Open("data.bin.lz", FileMode.Open))
    {
        using (FileStream extractedFile = File.Open("data.bin", FileMode.Create))
        {
            using (LzipArchive archive = new LzipArchive(sourceLzipFile))
            {
                archive.Extract(extractedFile);
            }
        }
    }

Compresses a file into .LZ archive using the LzipArchive class in Java.

    try (LzipArchive archive = new LzipArchive()) {
        archive.setSource("data.bin");
        archive.save("data.bin.lz");
    }

Extract LZip Archive using Java

    try (FileInputStream sourceLzipFile = new FileInputStream("data.bin.lz")) {
        try (FileOutputStream extractedFile = new FileOutputStream("data.bin")) {
            try (LzipArchive archive = new LzipArchive(sourceLzipFile)) {
                archive.extract(extractedFile);
            }
        }
    } catch (IOException ex) {
    }

Compresses a file into .LZ archive using the LzipArchive class using Python.Net

    with aspose.zip.lzip.LzipArchive() as archive:
        archive.set_source("data.bin")
        archive.save("data.bin.lz")

Extract Lzip Archive using Python.Net

    with io.FileIO("data.bin.lz", "rb") as source_lzip_file:
        with io.FileIO("data.bin", "x") as extracted_file:
            with aspose.zip.lzip.LzipArchive(source_lzip_file) as archive:
                archive.extract(extracted_file)

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 formát archivu LZ podporován ve všech operačních systémech?

Formát archivu LZ je podporován na více platformách, včetně UNIX, Linux, Windows a macOS. I když je nejčastěji spojován s prostředími podobnými UNIXu, nástroje a knihovny, které zpracovávají archivy LZ, jsou dostupné pro všechny hlavní operační systémy.

2. Jaké jsou výhody používání archivů LZ?

Archivy LZ jsou známé svou efektivitou při komprimaci dat s opakovanými vzory a nabízejí dobrou rovnováhu mezi rychlostí komprese a zmenšením velikosti souboru. Snadno se implementují, což z nich dělá spolehlivou volbu pro potřeby rychlé komprese dat, zejména při distribuci softwaru, zálohování dat a síťovém přenosu.

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

Formát LZ se obvykle používá pro kompresi jednotlivých souborů. Chcete-li komprimovat více souborů, musíte je nejprve zkombinovat do archivu (například tarball pomocí tar) a poté komprimovat výsledný archivní soubor pomocí komprese LZ. Tento proces je běžný v prostředí UNIX a Linux.