gzip -l возвращает неправильные значения для несжатого размера файла - PullRequest
1 голос
/ 22 марта 2020

Я пытаюсь быстро оценить номер строки сжатых файлов. Я делаю это путем проверки несжатого размера файла, выборки строк в начале файла с помощью zcat filename | head -n 100 (например) и деления несжатого размера на средний размер строки в этой выборке из 100 строк.

Проблема в том, что данные, которые я получаю от gzip -l, неверны. В основном кажется, что несжатый размер слишком мал, в некоторых случаях получая отрицательные значения сжатия. Например, в одном случае сжатый файл имеет размер 1,8 ГБ, а несжатый файл указан как 0,7 ГБ с помощью gzip -l, когда он фактически равен 9 ГБ при распаковке. Я пытался распаковать и повторно сжать, но все равно получил тот же размер без сжатия.

gzip 1.6 на Ubuntu 18.04.3

1 Ответ

2 голосов
/ 22 марта 2020

Ниже приведена часть gzip spe c ( RF C 1952 ), где она определяет способ хранения несжатого размера в файле gzip.

     ISIZE (Input SIZE)
        This contains the size of the original (uncompressed) input
        data modulo 2^32.

Вы работаете с архивом gzip, размер несжатого файла которого> 2 ^ 32, поэтому размер несжатого файла, сообщаемый gzip -l, равен всегда и будет неправильным.

Обратите внимание, что этот дизайн Ограничение формата файла gzip не вызывает проблем при распаковке архива. Единственное воздействие с gzip -l или gunzip -l

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...