XZ-Archivformat

XZ ist ein hochkomprimiertes Archivformat, das hauptsächlich zum Komprimieren einzelner Dateien verwendet wird und eine überlegene Komprimierungseffizienz und Open-Source-Kompatibilität bietet. Dieses als Teil der XZ Utils entwickelte Format ist für die Verwendung des LZMA2-Komprimierungsalgorithmus bekannt, der hohe Komprimierungsraten bei gleichzeitig angemessener Dekomprimierungsgeschwindigkeit erreicht. XZ-Archive werden häufig bei der Verteilung von Softwarepaketen verwendet, insbesondere in Unix-ähnlichen Betriebssystemen wie Linux.

Allgemeine Informationen zum XZ-Archiv

XZ-Archive sind für eine effiziente Komprimierung konzipiert, wobei der Schwerpunkt auf der Reduzierung der Dateigrößen für die Speicherung und Verteilung liegt. Das Format verwendet den LZMA2-Algorithmus, der Wörterbuchkomprimierung und Entropiekodierung kombiniert und sich daher äußerst effektiv für die Komprimierung großer Dateien eignet. XZ-Archive enthalten normalerweise eine einzelne komprimierte Datei, können aber mit anderen Tools wie tar kombiniert werden, um ganze Verzeichnisse zu komprimieren. Das XZ-Format wird häufig bei der Softwareverteilung, Datensicherung und Archivierung verwendet, insbesondere im Linux-Ökosystem, wo es zu einem Standard für die Verpackung von Software und Systemaktualisierungen geworden ist.

XZ-Verlaufsinformationen

  • 2005: Die Entwicklung des XZ-Formats begann im Rahmen des XZ Utils-Projekts, dessen Ziel es war, einen effizienteren Nachfolger des älteren LZMA-Formats zu schaffen.
  • 2009: XZ Utils wurden offiziell veröffentlicht und führten das XZ-Format als neuen Standard für hohe Komprimierungsanforderungen ein.
  • 2010: XZ begann in der Linux-Community immer beliebter zu werden und entwickelte sich schnell zum bevorzugten Format für die Komprimierung von Softwarepaketen und Systemarchiven. – 2011: Große Linux-Distributionen, darunter Debian und Arch Linux, begannen, XZ als Standardkomprimierungsformat für ihre Paket-Repositorys zu übernehmen.
  • 2014: Die Verwendung von XZ weitet sich über Linux hinaus aus und wird für die plattformübergreifende Softwareverteilung beliebt, insbesondere für Anwendungen, die hohe Komprimierungsraten erfordern.
  • 2020: XZ wird weiterhin häufig in der Softwarepaketierung, Datenspeicherung und -verteilung eingesetzt, insbesondere in Umgebungen, in denen eine effiziente Komprimierung von entscheidender Bedeutung ist.

Struktur des XZ-Archivs

Das XZ-Archivformat ist für die Komprimierung einzelner Dateien konzipiert und verwendet eine einfache Struktur, um hohe Komprimierungsraten zu erreichen. Hier ist eine Übersicht über die Struktur eines XZ-Archivs:

  1. Header: Der Header enthält Metadaten über das XZ-Archiv, einschließlich der Formatversion, Flags und aller optionalen verwendeten Erweiterungen. Es zeigt auch das Vorhandensein von Prüfsummen für die Datenintegrität an.
  2. Komprimierter Datenstrom: Der Kern des XZ-Archivs ist der komprimierte Datenstrom. Dieser Abschnitt enthält die eigentlichen Dateidaten, komprimiert mit dem LZMA2-Algorithmus. Der Datenstrom ist in Blöcke unterteilt, was eine effiziente Komprimierung und Dekomprimierung ermöglicht. Jeder Block kann unabhängig dekomprimiert werden, was die Wiederherstellung von Daten erleichtert, selbst wenn das Archiv teilweise beschädigt ist.
  3. Fußzeile: Die Fußzeile enthält eine CRC32-Prüfsumme, die die Integrität des Archivs überprüft. Es markiert außerdem das Ende des komprimierten Datenstroms und kann zusätzliche Informationen wie einen Blockindex für den schnellen Zugriff enthalten.

XZ-Komprimierungsmethoden

Das XZ-Format basiert hauptsächlich auf dem LZMA2-Komprimierungsalgorithmus, der für sein hohes Komprimierungsverhältnis und seine angemessene Dekomprimierungsgeschwindigkeit bekannt ist. Hier ist ein genauerer Blick auf die mit XZ verbundenen Komprimierungsmethoden:

  1. LZMA2: Dies ist die standardmäßige und einzige Komprimierungsmethode, die von XZ-Archiven verwendet wird. LZMA2 basiert auf dem LZ77-Algorithmus und verfügt über eine erweiterte Entropiecodierung, wodurch es bei der Komprimierung großer Dateien äußerst effizient ist. Es bietet anpassbare Komprimierungseinstellungen, sodass Benutzer je nach Bedarf entweder die Komprimierungsgeschwindigkeit oder das Komprimierungsverhältnis priorisieren können.
  2. Filter: Zusätzlich zu LZMA2 unterstützt XZ verschiedene optionale Filter, die vor der Komprimierung angewendet werden können, um die Dateigröße weiter zu reduzieren. Dazu gehören die Delta-Kodierung, die zum Komprimieren von Daten mit kleinen, wiederholten Änderungen nützlich ist, und BCJ (Branch/Call/Jump), das die Komprimierung von ausführbarem Code optimiert, indem bestimmte Anweisungen in besser komprimierbare Formen umgewandelt werden.
  3. CRC32- und SHA-256-Prüfsummen: Obwohl XZ-Archive keine Komprimierungsmethoden an sich sind, verwenden sie CRC32-Prüfsummen für Integritätsprüfungen und unterstützen optional SHA-256 für eine verbesserte Datenüberprüfung, um sicherzustellen, dass die komprimierten Daten nicht beschädigt oder manipuliert wurden.

.xz Unterstützte Vorgänge

  • Vollständige Extraktion: Extrahieren Sie ganz einfach alle Dateien aus einem .xz-Archiv und bewahren Sie dabei die Integrität und Struktur des Originalinhalts.
  • Selektive Extraktion: Zielt auf bestimmte Dateien in einem .xz-Archiv ab und ermöglicht so eine präzise Datenwiederherstellung oder selektive Dekomprimierung basierend auf Dateinamen oder anderen Kriterien.
  • Datenkomprimierung: Erstellen Sie .xz-Archive aus Dateien und Verzeichnissen und nutzen Sie dabei die effiziente LZMA2-Komprimierungsmethode, um die Dateigröße erheblich zu reduzieren.
  • Benutzerdefinierte Komprimierungseinstellungen: Passen Sie die Komprimierungsstufen und andere Parameter an, um ein Gleichgewicht zwischen Komprimierungsgeschwindigkeit und Dateigröße herzustellen und den Prozess an Ihre spezifischen Anforderungen anzupassen.

Aspose.Zip bietet umfassende Unterstützung für die Arbeit mit .xz-Archiven und erleichtert so die Verwaltung komprimierter Dateien. Folgendes können Sie tun:

Struktur der .XZ-Datei

Das .xz-Dateiformat wird hauptsächlich zur Komprimierung und Verpackung von Daten verwendet. Es nutzt den LZMA2-Algorithmus, um hohe Komprimierungsraten zu erreichen. Hier ist eine Übersicht über die Struktur eines .xz-Archivs:

  1. Stream-Header:

    • Magic Bytes: Die ersten 6 Bytes (FD 37 7A 58 5A 00) identifizieren die Datei als .xz-Archiv.
    • Stream-Flags: Enthält Details wie die Blockgröße und Komprimierungsoptionen.
  2. Blockheader:

    • Blockgröße: Gibt die Größe des folgenden Blocks an.
    • Komprimierungsmethode: Gibt den verwendeten Algorithmus an (normalerweise LZMA2).
    • Filterketten: Einzelheiten zu allen zusätzlichen Filtern, die vor oder nach der Komprimierung angewendet werden.
  3. Komprimierte Datenblöcke:

    • Daten: Die tatsächlichen Daten, die mit dem LZMA2-Algorithmus komprimiert wurden.
    • CRC32: Eine Prüfsumme zur Überprüfung der Integrität der komprimierten Daten.
  4. Indexabschnitt:

    • Indexdaten: Stellt Offsets für jeden Block und die unkomprimierte Größe bereit und ermöglicht so den wahlfreien Zugriff innerhalb des komprimierten Streams.
    • Index CRC32: Stellt die Integrität des Indexabschnitts sicher.
  5. Stream-Fußzeile:

    • Stream-Flags: Wiederholt die Stream-Flags aus dem Header zu Validierungszwecken.
    • Rückwärtsgröße: Die Größe des Indexabschnitts, die das umgekehrte Durchlaufen der Datei ermöglicht.
    • Magic Bytes: Die Datei endet mit einer 2-Byte-Sequenz (59 5A), um das Ende des .xz-Archivs anzuzeigen.
  6. Optionale Metadaten: – Einige .xz-Archive enthalten möglicherweise zusätzliche Metadaten für spezielle Funktionen oder erweiterte Funktionen, wie z. B. benutzerdefinierte Filter oder Verschlüsselung.

Struktur der .XZ-Datei

Popularität des XZ-Formats

Das .xz-Dateiformat hat aufgrund seiner hohen Komprimierungsrate und effizienten Ressourcennutzung insbesondere in der Linux- und Open-Source-Community große Popularität erlangt. Es wird häufig zum Komprimieren von Softwarepaketen, zum Verteilen von Quellcode und zum Archivieren großer Datensätze verwendet. Das XZ Utils-Toolset bietet robuste Unterstützung für das Erstellen, Extrahieren und Verwalten von .xz-Dateien auf verschiedenen Plattformen, einschließlich Linux, macOS und Windows. Obwohl .xz in Windows-Umgebungen nicht so weit verbreitet ist wie ZIP oder CAB , wird es wegen seines ausgewogenen Verhältnisses zwischen Komprimierungseffektivität und Leistung geschätzt, was es zur bevorzugten Wahl für Entwickler und Systemadministratoren macht. Darüber hinaus ist .xz in viele Paketverwaltungssysteme wie APT von Debian und Pacman von Arch Linux integriert, was seine Rolle im Ökosystem der Softwareverteilung weiter festigt.

Beispiele für die Verwendung von XZ-Archiven

Dieser Abschnitt enthält Codebeispiele, die zeigen, wie XZ-Archive mit C# und Java komprimiert und dekomprimiert werden. Diese Beispiele nutzen Bibliotheken wie Aspose.Zip für C# und die integrierte XzArchive-Klasse (abhängig von der Java-Umgebung), um mit XZ-Dateien zu interagieren.

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

Weitere Informationen

Die Leute haben gefragt

1. Wird .xz auf allen Betriebssystemen unterstützt?

Während .xz am häufigsten in Linux-Umgebungen verwendet wird, wird es auf allen wichtigen Betriebssystemen unterstützt. Tools wie XZ Utils sind für Windows und macOS verfügbar und plattformübergreifende Tools wie 7-Zip unterstützen ebenfalls .xz-Dateien.

2. Welche Vorteile bietet die Verwendung von XZ-Dateien?

XZ-Dateien bieten mehrere Vorteile, darunter hohe Komprimierungsraten, effiziente Nutzung von Systemressourcen und plattformübergreifende Kompatibilität. Sie werden häufig zum Archivieren großer Datensätze, zum Verteilen von Softwarepaketen und zum Sichern von Daten verwendet.

3. Kann ich mehrere Dateien in ein einziges .xz-Archiv komprimieren?

Im Gegensatz zu Formaten wie ZIP oder TAR , .xz wird normalerweise zum Komprimieren einer einzelnen Datei verwendet. Wenn Sie mehrere Dateien komprimieren möchten, müssen Sie sie zunächst in einer einzigen Datei archivieren (mithilfe einer Aspose.Zip-API , um eine .tar-Datei zu erstellen ) und komprimieren Sie dann das Archiv mit .xz, was zu einer .tar.xz-Datei führt.