ファイルをgzipで圧縮すると、特に非圧縮ファイルのサイズが4 GBを超える場合に、非圧縮ファイルサイズが何であるかを(圧縮解除せずに)すばやく照会する方法があります。
RFC https://tools.ietf.org/html/rfc1952#page-5によると、ファイルの最後の4バイトを照会できますが、非圧縮ファイルが> 4GBの場合、値は単にuncompressed value modulo 2^32
この値はを実行して取得することもできますがgunzip -l foo.gz
、uncompressed value modulo 2^32
上記のようにフッターを読み込んでいると考えられるため、「uncompressed」列には再び含まれています。
最初に解凍せずに非圧縮ファイルサイズを取得する方法があるかどうか疑問に思っていましたが、これはgzipされたファイルに50GB以上のデータが含まれ、次のような方法を使用して解凍するのに時間がかかる場合に特に便利です gzcat foo.gz | wc -c
編集: 4GBの制限は、OSXに含まれるユーティリティのman
ページで公に認められていますgzip
(Apple gzip 242
)
BUGS
According to RFC 1952, the recorded file size is stored in a 32-bit
integer, therefore, it can not represent files larger than 4GB. This
limitation also applies to -l option of gzip utility.
gzip
1992年に出てきました。この辺りに23歳の人がたくさんいると驚くでしょう。確かにいくつかあると思いますが、年齢の中央値は30〜35歳であると言えます。
xz
その制限のないものに切り替える良い機会かもしれません。GNUはに切り替えていxz
ます。
xz
この問題を「解決」するように見えます。
gzip
このコミュニティの多くのユーザーよりも年上でなければなりません!