Frage

Sagen Sie, ich habe eine BZIP2 -Datei (über 5 GB) und möchte nur Block #x dekomprimieren, da es dort ist, wo meine Daten sind (Block ist jedes Mal anders). Wie würde ich das machen?

Ich habe darüber nachgedacht, einen Index zu machen, wo sich alle Blöcke befinden, und dann den Block, den ich benötige, aus der Datei ausschneide und bZIP2Recover darauf anwenden.

Ich habe auch über Komprimieren von 1 MB nach dem anderen nachgedacht, diese dann an eine Datei angemeldet (und den Speicherort aufzeichnen) und einfach die Datei greifen, wenn ich sie brauche, aber ich würde lieber die ursprüngliche BZIP2 -Datei intakt halten.

Meine bevorzugte Sprache ist Ruby, aber für mich ist die Lösung einer Sprache in Ordnung (solange ich das Prinzip verstehe).

War es hilfreich?

Lösung

Da ist ein http://bitbucket.org/james_taylor/seek-bzip2

Schnapp dir die Quelle, kompiliere sie.

Rennen mit

./seek-bzip2  32 < bzip_compressed.bz2 

zu testen.

Der einzige Param ist die Bit -Verschiebung des gewundten Blockheaders. Sie können es erhalten, wenn Sie eine "31 41 59 26 53 59" -Hex -Zeichenfolge in der Binärdatei finden. Das war falsch. Der Blockstart kann nicht auf die Byte -Grenze ausgerichtet sein. Sie sollten daher nach möglichen Bitverschiebungen von "31 41 59 26 53 59" -Hex -Zeichenfolge suchen, wie es in BZIP2Recover geschaltet wird - http://www.bzip.org/1.0.3/html/recovering.html

32 ist eine Bitgröße des "Bzh1" -Headers, bei dem 1 jede Ziffer von "1" bis "9" (in klassischem BZIP2) sein kann - es ist eine (unkomprimierte) Blockgröße in Hunderten von KB (nicht genau).

Andere Tipps

Es ist wahr, dass BZIP-Tisch fast so langsam ist wie die Dekomprimierung, aber Sie müssen es natürlich nur einmal tun und Sie können die Ausgabe auf eine Art und Weise speichern, um sie als Index zu verwenden. Dies ist perfekt für das, was ich brauche, aber möglicherweise nicht das ist, was jeder braucht.

Ich brauchte ein wenig Hilfe, um es unter Windows zu kompilieren.

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