Неправильная оценка несжатого файла?


9

У меня был большой (~ 60G) сжатый файл ( tar.gz).

Раньше я splitразбивал его на 4 части, а затем catсоединял их вместе.

Однако теперь, когда я пытаюсь оценить размер несжатого файла, получается, что он меньше оригинала? Как это возможно?

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

Это splitдействительно имеет отношение к этому? У вас есть проблемы только после разделения и объединения их вместе?
Бармар

Ответы:


20

Это вызвано размером поля, используемого для хранения несжатого размера в сжатых файлах: оно составляет всего 32 бита, поэтому gzipможет хранить только файлы размером до 4 ГБ. Все, что больше, сжимается и распаковывается правильно, но gzip -lдает неправильный несжатый размер.

Поэтому разбиение архива и его реконструкция не вызвали этого и не должны были повлиять на файл - если вы хотите убедиться, вы можете проверить его gzip -tv.

См быстрого способа разработки несжатого размера больших сжатых файлов для более подробной информации, а также руководство :gzip

gzipФормат представляет собой размер входного по модулю 2³² , так что несжатый размер и степень сжатия, перечислены неправильно для несжатых файлов 4 ГиБ и больше.


Таким образом, фактический контент все еще может быть целым, верно?
Руслан

@Ruslan Да, отображаемый размер неправильный, но содержимое в порядке.
Стивен Китт,

+1 Я собирался догадаться, что это была ошибка UINT32 или что-то в этом роде.
mathreadler
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.