Frage

Werkzeuge existieren Direktzugriff auf gzip und bzip2-Archive zur Verfügung zu stellen:

Ich suche nach einer ähnlichen Lösung für 7zip

(Das Ziel ist, die manchmal gigantischen Wikipedia-Dump-Dateien offline zu nutzen, ohne sie zu dekomprimieren)

War es hilfreich?

Lösung

Ich tought es besser ist, GZIP, BZIP2 und LZMA Interna zusammenzufassen klar etwas zu machen:

  1. GZIP ist eigentlich ein Format, das Deflate-Algorithmus verwendet. Aus statischen Huffman-Codes (deflate Dokumente erwähnt auch über dynamische Huffman, aber eigentlich sind sie statisch zu) deflate sollte als blockweise (Schiebefenster ist ein anderer Begriff hier) codiert werden. zran.c scheint diese Blöcke Grenzen und versucht zu finden, höchstens zwei aufeinanderfolgenden Blöcke zu dekodieren bis was einige KiB unkomprimierte Daten für das Sammeln von genügend Daten zu dekomprimieren enthalten könnte (auf ganze 32 KiB Fenster zu füllen). So Random Access ist durchaus möglich, auch ohne Indextabelle.

  2. BZIP2 ist eigentlich ein BWT Klasse Kompressionsalgorithmus. Und aufgrund BWT Natur, ist es kein Wunder, dass es die blockweise. Es ist Blöcke begrenzt für jede einzelne Blöcke bis 900 KiB auf. Auch werden die Blöcke Grenzen gut definiert einfachen Wiederherstellungsprozess (hat riesigen verschiedenen Marker). So können Sie auch mehrere Threads verwenden, sofort alle Daten zu dekomprimieren. In anderen Worten, ist Random Access durchaus möglich, auch ohne Tisch (es ist bereits von Format unterstützt).

  3. unterstützt LZMA bis zu 1 GiB Wörterbuch und es ist nicht blockweise codiert. Es verwendet eine Reihe Codierer codieren Wahrscheinlichkeiten statt Huffman-Codierer. Selbst wenn man berücksichtigt Größe 64 MiB Fenster (sehr häufig Wert) aufgrund Bereichs Coder Natur, die wir zu einem bestimmten zufälligen Punkt bis Auffüllen gesamte Fenster nicht einfach dekodieren können. Auch kann LZMA der Zustandsmaschine lästig sein. Also, es ist die Umsetzung ist ziemlich schwer oder sogar unmöglich.

Vielleicht kann LZMA2 oder PPM Methoden für solche Verwendungen eingesetzt werden (7-Zip unterstützt sie auch innerhalb von 7-Zip-Format). PPM spült es das Modell, wenn es Statistiken sind voll und LZMA2 spült absichtlich einigen Zustand in einem Intervall mit mehreren Threads Dekompression zu ermöglichen. Ihre Direktzugriffs Implementierung kann möglich sein.

Andere Tipps

Mein lzopfs Projekt ermöglicht direkten Zugriff auf lzop, gzip, bzip2 und XZ-Dateien. XZ-Dateien sind LZMA codiert, so dass hoffentlich sind ok Ersatz für 7-zip für Ihre Zwecke. Beachten Sie, dass für realistische random access, werden Sie Ihre XZ-Archiv mit einem blockierten Encoder erstellen müssen, wie zum Beispiel pixz oder der multithreading-fähige Modus der xz-utils 5.1.x alpha.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top