Kann ich eine GZIP-Datei auf Grundlage der ursprünglichen unkomprimierten Datei exakt neu erstellen?

Kann ich eine GZIP-Datei auf Grundlage der ursprünglichen unkomprimierten Datei exakt neu erstellen?

Ich habe eine Reihe von gzipDateien, die ich mithilfe von effizienter speichern möchte xz, ohne die Rückverfolgbarkeit anhand einer Reihe von Prüfsummen der GZIP-Dateien zu verlieren.

Ich glaube, dass dies darauf hinausläuft, die GZIP-Dateien aus den XZ-Dateien neu erstellen zu können, bin aber auch für andere Vorschläge offen.

Um das genauer zu erläutern: Wenn ich eine GZIP-Datei mit dem Namen habe target.txt.gzund sie in dekomprimiere target.txtund die komprimierte Datei verwerfe, möchte ich die ursprüngliche komprimierte Datei exakt wiederherstellen target.txt.gz. Mit exakt meine ich, dass eine kryptografische Prüfsumme der Datei anzeigen sollte, dass sie exakt mit dem Original übereinstimmt.

Ich dachte zunächst, dass dies unmöglich sei, da eine GZIP-Datei Metadaten wie den ursprünglichen Dateinamen und den Zeitstempel enthält, die bei der Dekomprimierung möglicherweise nicht erhalten bleiben, und Metadaten wie einen Kommentar, das Quellbetriebssystem und Komprimierungsflags, die bei der Dekomprimierung mit ziemlicher Sicherheit nicht erhalten bleiben.

Doch dann dachte ich daran, meine Frage zu modifizieren: Gibt es eine minimale Menge an Header-Informationen, die ich aus der GZIP-Datei extrahieren könnte, sodass ich in Kombination mit den unkomprimierten Daten die ursprüngliche GZIP-Datei wiederherstellen könnte?

Und dann dachte ich, dass die Antwort immer noch nein sein könnte, da es Tools gibt wieZopflUnd7-Reißverschluss, das gzip-kompatible Streams erstellen kann, die besser (und daher anders) sind als das Standard-gzip-Programm. Soweit mir bekannt ist, zeichnet das gzip-Dateiformat nicht auf, welcher dieser Kompressoren es erstellt hat.

Meine Frage lautet also: Gibt es andere Optionen, an die ich nicht gedacht habe, die aber dazu führen könnten, dass ich mein im ersten Absatz dargelegtes Ziel doch erreichen kann?

Antwort1

Dies könnte hilfreich sein:https://github.com/google/grittibanzli

Grittibanzli ist ein Tool zum Komprimieren eines Deflate-Streams in eine kleinere Datei, die dann wieder in den ursprünglichen Deflate-Stream dekodiert werden kann. Das heißt, es komprimiert nicht nur die Daten im Deflate-Stream, sondern auch die Deflate-bezogenen Informationen wie LZ77-Symbole und Huffman-Bäume, um eine gzip-, png-, ...-Datei exakt zu reproduzieren.

verwandte Informationen