[Linux] gzファイルの解凍後のサイズを知る方法
悩み
圧縮ファイルを解凍したら、どのくらいのサイズになるのか知りたい!
悩み詳細
サーバを運用していると、末尾が.gzの拡張子で終わるgzip圧縮をしているファイルをよく見かけます。
そのgzファイルを解凍する場合、一番に気になるのは解凍後のサイズです。
もちろんgzファイル自体のサイズはパッと見て分かるのですが...解凍後も分かるなら知りたいです!
解決方法
1.力技編(暫くはこれしか知りませんでした)
gzip -dc
とwc -c
の合わせ技
-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とか見ても驚かなくなる?