Macターミナルでよく使うzip/gzip/bzip2の圧縮・解凍

Macでターミナルを使ってファイルをいじるようになると圧縮・解凍する作業も増えてきます。ここではよく使う圧縮・解凍コマンドをまとめています。

zip/gzip/bzip2コマンド

この3種類の圧縮形式はよく出てきます。他にも圧縮形式は幾つかありますが、この3種類を扱うことがほとんどかと思います。圧縮率はファイルの種類によって異なります。一般的には、bzip2の圧縮率が一番高く、続いてgzipとzipとなっていますが、zipとgzipは処理速度が早いです。なのでこの3つを扱えれば十分かなと思います。

圧縮コマンド

gzip/bzip2は直接のコマンドでは複数のファイルを1つにまとめてアーカイブする機能が備わっていません。そのためフォルダをまとめて圧縮することができないので、tar形式のアーカイブを圧縮します。ファイル拡張子が.tar.gzや.tar.bz2となっているファイルはtar形式のアーカイブを圧縮しています。
単一ファイルを圧縮する場合はgzip/bzip2コマンドが使えますが、実際にはほぼ使用することはないと思うので掲載しません。
zipは特に区別はないですが、やはりフォルダごとそのまま圧縮している場合が多いと思います。

gzip圧縮

<tar形式のアーカイブをgzipで圧縮>

圧縮のときは”c”を付けて、gzipは”z”を付けます。

$ tar cvzf [圧縮ファイル名(~.tar.gz)] [ディレクトリ/ファイル]
例)
$ tar cvzf sample.tar.gz sample

$ tar cvf - sample | gzip -c > sample.tar.gz
これでも同じように圧縮できます。

特定のファイルやフォルダを除外したい時は、”–exclude”オプションを使います。

例)
$ tar cvzf sample.tar.gz --exclude='.DS_Store' --exclude=.git

bzip2圧縮

<tar形式のアーカイブをbzip2で圧縮>

*以前は”y”オプションを使っていましたが、現在は”j”のようです。

圧縮のときは”c”を付けて、bzip2は”j”を付けます。

$ tar cvjf [圧縮ファイル名(~.tar.bz2)] [ディレクトリ/ファイル]
例)
$ tar cvjf sample.tar.bz2 sample

$ tar cvf - sample | bzip2 -c > sample.tar.bz2
これでも同じように圧縮できます。

特定のファイルやフォルダを除外したい時は、gzipと同じように”–exclude”オプションを使います。

例)
$ tar ycvf sample.tar.gz --exclude='.DS_Store' --exclude=.git

zip圧縮

<zipで圧縮>

$ zip [圧縮ファイル名] [ディレクトリ/ファイル]
例)
$ zip -r sample.zip sample -rオプションでディレクトリ配下のサブディレクトリも全て含めて実行します。

特定のファイルやフォルダを除外したい時は、”-x”オプションを使います。

例)
$ zip -r sample.zip sample -x '.DS_Store' '*.git*'

解凍コマンド

gzip/bzip2はtar形式のアーカイブを圧縮していることがほとんどなので、gzip/bzip2を解凍してtar形式のアーカイブを展開します。

gzip解凍

<gzipを解凍してtar形式のアーカイブを展開>

解凍のときは”x”を付けて、gzipは”z”を付けます。

$ tar xvzf [圧縮ファイル名(~.tar.gz)]
例)
$ tar xvzf sample.tar.gz

$ gzip -dc sample.tar.gz | tar xvf -
これでも同じように解凍できます。

圧縮ファイル内を確認するには、

$ tar tvf sample.tar.gz

ファイルやフォルダを指定して解凍する場合は、

$ tar xvzf sample.tar.gz *sample_html

「*sample_html」の”*”は上位フォルダのワイルドカードです。これでこの環境のどこかにあるsample_htmlフォルダ以下だけを解凍します。ファイルを指定するときはこれがファイル名になります。

bzip2解凍

<bzip2を解凍してtar形式のアーカイブを展開>

解凍のときは”x”を付けて、gzipは”z”を付けます。

$ tar xvjf [圧縮ファイル名(~.tar.bz2)]
例)
$ tar xvjf sample.tar.bz2

$ bzip2 -dc sample.tar.bz2 | tar xvf -
これでも同じように解凍できます。

gzipと同じく圧縮ファイル内を確認するには、

$ tar tvf sample.tar.bz2

ファイルやフォルダを指定して解凍する場合は、

$ tar xvjf sample.tar.bz2 *samlple_html

zip解凍

<unzipで解凍>

$ unzip [圧縮ファイル名]
例)
$ unzip sample.zip

また、zipコマンドは-eオプションで圧縮ファイルにパスワードを付けることができます。

$ zip -e sample.zip samle

パスワードが付いているzipファイルはunzipするとパスワードを問い合わせてきます。
そこでパスワードを入力すると解凍できます。

圧縮ファイル内を確認するには、

$ unzip -t sample.zip

ファイルやフォルダを指定して解凍する場合は、

$ unzip sample.zip *sample_html*

「*sample_html*」先頭の”*”は上位フォルダのワイルドカードです。これでこの環境のどこかにあるsample_htmlを解凍します。末尾の”*”はsample_htmlがフォルダであった場合にその配下も解凍します。この”*”がないと空のフォルダだけ解凍されるので、フォルダ配下も全て解凍するときは気をつけてください。