В соответствии со спецификацией gz размер файла сохраняется в последних 4 байтах файла .gz.
Я создал 2 файла с
dd if=/dev/urandom of=500M bs=1024 count=500000
dd if=/dev/urandom of=5G bs=1024 count=5000000
я их заархивировал
gzip 500M 5G
Я проверил последние 4 байта, делая
tail -c4 500M|od -I (returns 512000000 as expected)
tail -c4 5G|od -I (returns 825032704 as not expected)
Кажется, что преодоление невидимого 32-битного барьера делает значение, записанное в ISIZE, совершенно бессмысленным. Что более раздражает, чем если бы вместо этого они использовали какой-то бит ошибки.
Кто-нибудь знает способ получить несжатый файл .gz из .gz без его извлечения?
Спасибо
спецификация: http://www.gzip.org/zlib/rfc-gzip.html а>
редактировать: если кто-то попробует, вы можете использовать /dev/zero вместо /dev/urandom
dd seek=10G if=/dev/zero of=out.dat count=0
удобнее для большинства файловых систем - person nodakai   schedule 11.08.2015