Niepoprawne oszacowanie pliku nieskompresowanego?


9

Miałem duży skompresowany plik (~ 60G) ( tar.gz).

Kiedyś splitrozbijałem go na 4 części, a potem catponownie łączyłem.

Jednak teraz, gdy próbuję oszacować rozmiar nieskompresowanego pliku, okazuje się, że jest mniejszy niż oryginał? Jak to jest możliwe?

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

Czy to splitnaprawdę ma znaczenie? Czy problem występuje tylko po podzieleniu ich i ponownym połączeniu?
Barmar

Odpowiedzi:


20

Jest to spowodowane wielkością pola używanego do przechowywania nieskompresowanego rozmiaru w plikach gzip: to tylko 32 bity, więc gzipmożna przechowywać tylko rozmiary plików do 4 GiB. Wszystko większe jest poprawnie skompresowane i nieskompresowane, ale gzip -ldaje niepoprawny rozmiar.

Tak więc podział tarballa i jego rekonstrukcja nie spowodowały tego i nie powinny wpłynąć na plik - jeśli chcesz się upewnić, możesz to sprawdzić gzip -tv.

Zobacz najszybszym sposobem wypracowania nieskompresowanego wielkości dużego pliku zgzipowanego więcej szczegółów i instrukcja :gzip

gzipFormat odpowiada wielkości modulo wejściowego 2³² , tak kompresją i stosunek kompresji są niepoprawnie podane dla skompresowanych plików 4 GiB i większych.


Tak więc rzeczywista treść może być nienaruszona, prawda?
Ruslan

@ Ruslan tak, wyświetlany rozmiar jest nieprawidłowy, ale zawartość jest w porządku.
Stephen Kitt

+1 Miałem zgadywać, że to błąd UINT32 czy coś w tym rodzaju.
mathreadler
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.