非圧縮ファイルの見積もりが間違っていますか?


9

大きな(〜60G)圧縮ファイル(tar.gz)がありました。

私はsplitそれを4つの部分に分割してから、catそれらを一緒に結合していました。

しかし、今、私が非圧縮ファイルのサイズを見積もろうとしているとき、それはオリジナルよりも小さいことがわかりましたか?これはどのようにして可能ですか?

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

split、これには本当に関連しますか?それらを分割して結合し直した後でのみ問題が発生しますか?
Barmar 2018

回答:


20

これは、gzip圧縮されたファイルに非圧縮サイズを格納するために使用されるフィールドのサイズが原因です。これは32ビットgzipしかないため、最大4 GiBのファイルのサイズしか格納できません。それより大きいものはgzip -l正しく圧縮され、圧縮解除されますが、圧縮されていないサイズは正しくありません。

そのため、tarballを分割して再構築しても問題は発生せず、ファイルに影響を及ぼしていないはずですgzip -tv。確認したい場合は、で確認できます。

参照してください。非圧縮の大gzip圧縮されたファイルのサイズがワークアウトの最速の方法の詳細について、およびマニュアルgzip

このgzip形式は2³²を法とする入力サイズを表すため、非圧縮ファイルのサイズが4 GiB以上の場合、非圧縮サイズと圧縮率が正しく表示されません。


ですから、実際のコンテンツは無傷のままでいいのですか?
ルスラン

@Ruslanはい、表示されるサイズは間違っていますが、内容は問題ありません。
スティーブンキット2018

+1私はそれがUINT32エラーかそのようなものだと思っていました。
mathreadler 2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.