Aufteilen der gzip-Datei in kleinere gz-Dateien ohne erneutes Komprimieren

9

Ich habe eine große .gz-Datei. Ich möchte es in 100 kleinere gzip-Dateien aufteilen, die jeweils für sich dekomprimiert werden können. Mit anderen Worten: Ich suche nicht nach einer Möglichkeit, die .gz-Datei in Blöcke zu zerlegen, die wieder zusammengesetzt werden müssten, um sie dekomprimieren zu können. Ich möchte in der Lage sein, jede der kleineren Dateien unabhängig voneinander zu dekomprimieren.

Kann es gemacht werden, ohne die gesamte Datei erneut zu komprimieren?

Kann es gemacht werden, wenn die Originaldatei mit komprimiert ist --rsyncable? ("Stellen Sie das rsync-Programm besser in Frage, indem Sie die interne Struktur des komprimierten Datenstroms regelmäßig zurücksetzen."

Kann es für eines der anderen komprimierten Formate durchgeführt werden? Ich würde mir vorstellen, bzip2wäre machbar - da es in Blöcken komprimiert ist.

Ole Tange
quelle
Haben Sie versucht, split -b?
George Vasiliou
3
@GeorgeVasiliou Es werden keine kleineren gzip-Dateien erstellt, die dekomprimiert werden können.
Ole Tange
Die Antwort auf Ihre erste Frage lautet "Nein". Dies wurde in " Letzte Zeile der gz-Datei löschen" behandelt . Die Antwort lautet bei den meisten komprimierten Formaten wahrscheinlich Nein, da das, was Sie verlangen, gegen die Komprimierung verstößt. Ich denke, die Antwort lautet auch nein gzip --rsyncable, da „gunzip den Unterschied nicht erkennen kann“ (wenn Sie einen Ort zum Teilen finden könnten, könnten Sie sagen, dass es einen Ort zum Teilen gibt). Es könnte mit bzip2 wegen seiner besonderen Blockfunktion machbar sein.
Gilles 'SO - hör auf böse zu sein'
Dies kann hilfreich sein: stackoverflow.com/a/22628945/4941495 Lassen Sie einfach den Standardeingabestream die Ausgabe von sein gzip -d -c bigfile.gz.
Kusalananda
Ohne erneutes Komprimieren wäre dies bzip2tatsächlich mit einer Datei möglich. Dies wäre mit gzoder xznur durch unabhängiges Komprimieren jedes Blocks möglich, sodass eine erneute Komprimierung erforderlich wäre.
Xhienne

Antworten:

0

Das Teilen und Zusammenfügen der großen Datei funktioniert, es ist jedoch unmöglich, Teile der komprimierten Datei zu dekomprimieren, da wichtige Informationen über den gesamten Datensatz verteilt sind. Ein anderer Weg; Teilen Sie die unkomprimierte Datei und komprimieren Sie die einzelnen Teile. Jetzt können Sie jedes Stück dekomprimieren. Aber warum? Sie müssen alle dekomprimierten Teile vor der weiteren Verarbeitung zusammenführen.

Ingopingo
quelle
1
Unterhaltsame Tatsache: Wenn Sie die einzeln komprimierten Teile (mit gzipoder xz) haben, können Sie Verkettung und Dekomprimierung oder Dekomprimierung und Verkettung durchführen. Die Reihenfolge spielt keine Rolle.
Kusalananda
Vielleicht hängt es von den Daten ab. Wenn Sie Disk-Images teilen und komprimieren, haben Sie die Möglichkeit, Teile des Dateisystems wiederherzustellen. Wenn Sie zuerst komprimieren und dann teilen, haben Sie definitiv keine Chance.
Ingopingo
Nein, und das war auch nicht meine Prämisse. Ich habe gerade gesagt, dass die Reihenfolge, in der Sie Verkettung und Dekomprimierung durchführen, wenn Sie Teile einzeln komprimiert haben, keine Rolle spielt (dies liegt an den komprimierten Dateiformaten). Wenn man zuerst komprimiert und dann teilt, muss man natürlich zuerst neu kombinieren.
Kusalananda
Oh, das ist cool. Es funktioniert, obwohl jedes Teil einen eigenen Dateikopf enthält!
Ingopingo