Schätzung der unkomprimierten Datei falsch?


9

Ich hatte eine große (~ 60G) komprimierte Datei ( tar.gz).

Ich habe splites in 4 Teile zerlegt und sie dann catwieder zusammengefügt.

Wenn ich jetzt jedoch versuche, die Größe der unkomprimierten Datei zu schätzen, stellt sich heraus, dass sie kleiner als das Original ist. Wie ist das möglich?

$ gzip -l myfile.tar.gz 
         compressed        uncompressed  ratio uncompressed_name
        60680003101          3985780736 -1422.4% myfile.tar

Ist das splitwirklich relevant? Haben Sie das Problem erst, nachdem Sie sie aufgeteilt und wieder zusammengefügt haben?
Barmar

Antworten:


20

Dies wird durch die Größe des Felds verursacht, in dem die unkomprimierte Größe in komprimierten Dateien gespeichert wird: Es sind nur 32 Bit, sodass gzipnur Dateigrößen bis zu 4 GiB gespeichert werden können. Alles, was größer ist, wird korrekt komprimiert und dekomprimiert, gzip -lergibt jedoch eine falsche unkomprimierte Größe.

Das Aufteilen und Rekonstruieren des Tarballs hat dies also nicht verursacht und sollte die Datei nicht beeinträchtigen. Wenn Sie sicherstellen möchten, können Sie dies überprüfen gzip -tv.

Weitere Informationen finden Sie unter Schnellste Methode zum Ermitteln der unkomprimierten Größe einer großen GZIPPED-Datei sowie im gzipHandbuch :

Das gzipFormat stellt die Eingabegröße modulo 2³² dar , sodass die unkomprimierte Größe und das Komprimierungsverhältnis für unkomprimierte Dateien ab 4 GiB falsch aufgeführt sind.


Der eigentliche Inhalt kann also noch intakt sein, oder?
Ruslan

@ Ruslan ja, die angezeigte Größe ist falsch, aber der Inhalt ist in Ordnung.
Stephen Kitt

+1 Ich wollte vermuten, dass es sich um einen UINT32-Fehler oder ähnliches handelt.
Mathreadler
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.