gz の仕様によると、ファイルサイズは .gz ファイルの最後の 4 バイトに保存されます。
で2つのファイルを作成しました
dd if=/dev/urandom of=500M bs=1024 count=500000
dd if=/dev/urandom of=5G bs=1024 count=5000000
私はそれらをgzipしました
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/urandom の代わりに /dev/zero を使用できます