FIETS ~インフラエンジニアトレーニング場~

24歳までIT音痴・PC嫌いだった人間が、インフラエンジニアとして食べていけるようになるまでに役に立った情報を掲載

[Linux] gzファイルの解凍後のサイズを知る方法

 

悩み

圧縮ファイルを解凍したら、どのくらいのサイズになるのか知りたい!

 

 

悩み詳細

サーバを運用していると、末尾が.gzの拡張子で終わるgzip圧縮をしているファイルをよく見かけます。
そのgzファイルを解凍する場合、一番に気になるのは解凍後のサイズです。
もちろんgzファイル自体のサイズはパッと見て分かるのですが...解凍後も分かるなら知りたいです!

 

 

解決方法

1.力技編(暫くはこれしか知りませんでした)

gzip -dcwc -cの合わせ技

 

gzip

-d   (--decompress,--uncompress): 伸長する。括弧内の長いオプションからも分かるように、解凍することと同意
-c(--stdout,--to-stdout)                   : 出力を標準出力に書き出し、元ファイルを変更しない

 

wc

-c : バイト数を集計して表示する


なので、上記コマンドを合わせることで、元ファイルそのままに中身を出力。

それをパイプ(|)でwcに渡すことで、byte数を数えることができます。


※ただこれは、全て出力してから数える作業をしてるので、大きいファイルでは時間がかかってしまいます...


例)

$ gzip -dc foo.tar.gz | wc -c
471224320

 

 

2.Better編

より良いのは、-l(--list)オプション!
gzip -l foo.tar.gz


-l (--list) : 圧縮された個々のファイルについて、以下(例)のフィールドを列挙する

例)

 $ gzip -l foo.tar.gz
compressed uncompressed ratio uncompressed_name
412408872 471224320 12.5% foo.tar

 

恐らくどこかで情報を持ってるのか、これは即時に返ってくる。
ここのuncompressedでも解凍後の容量分かる!

 


やはり知ってるだけで楽になる知識ってありますね!

 

 

豆知識

tar.gzとは

tarもgzも圧縮だと思ってる人がいましたが、tarとgzで役割が違います。
tar : 複数のファイルを1つにまとめた“アーカイブファイル”を作成
gz : 圧縮

➡️1つのディレクトリに纏めてから圧縮する。

というイメージです。こうすることで圧縮率も上がります。

 
これが分かってるとtar.gzに慣れてる人がtar.bz2とか見ても驚かなくなる? 

 

 

参考

Man page of GZIP

Man page of WC