京橋のバイオインフォマティシャンの日常

まずは、データ分析、コマンドラインのメモとして

Macでの圧縮・解凍コマンドをメモっておく件

よく使う割にいつもネットで調べるはめになるので、、

このタイミングで、Mac Terminalでの圧縮と解凍コマンドをメモっておく*1

データ圧縮方式 / アーカイブ方式

について、まとめてみた。

.zip について

.zipは、Windowsでよく使用される、データ圧縮やアーカイブのフォーマットの1つである。

Macの場合、control + クリックで、「・・・を圧縮」という選択があって、zip圧縮できる。

ただ、zipコマンドでは、4GB以上のファイルが圧縮できないので、それ以上の容量のファイル圧縮には、.tar.gz形式などを使用する*2*3

いちおうコマンドだと、、、

zipコマンドによるzip圧縮
$ zip [File name]
unzipコマンドによるzip解凍
$ unzip [File name]

.tarについて

tar は、Tape Archival and Retrieval formatの略である。

.tar ファイルは、データ圧縮は行われておらず、複数のフォルダ・ファイルを1つにまとめられたアーカイブ・ファイルである*4

tarコマンドによるtarアーカイブ化(非圧縮)

「XXXX.tar」としてアーカイブ化する場合

$ tar -cvf XXXX.tar [File1] [File2] [File3] 

オプション

c: 新規作成(圧縮)する

v: 処理したファイルの一覧表示

f: 指定ファイルを使用する

[File1] [File2] [File3]: 圧縮したいファイル(フォルダも可)

tarコマンドによるtarアーカイブ解凍

「XXXX.tar」をアーカイブ解凍する場合

$ tar -xvf XXXX.tar

オプション

x: 解凍する

.gzについて

gzipコマンドによるgzip圧縮
$ gzip [File1]  

複数のファイルを圧縮する場合

$ gzip [File1] [File2] [File3]  

この場合、それぞれ別のgzファイルとして保存される

つまり、gzipコマンドでは、ファイルの圧縮はできるが、 ファイルをまとめるアーカイブ化はできない。

gunzipコマンドで、gzip圧縮をもとに戻す

「XXXX.gz」を解凍する場合

$ gunzip XXXX.gz

.tar.gzについて

.tar.gzとは、tarアーカイブ化して、 gzip圧縮することを意味する。

tarコマンドによるtar.gz圧縮

「XXXX.tar.gz」として、tar.gz圧縮アーカイブ化する場合

$ tar -zcvf XXXX.tar.gz [File1] [File2] [File3]
#あるいは
$ tar acvf XXXX.tar.gz [File1] [File2] [File3]

オプション

z: gzipの意味

cvf: tarアーカイブ

[File1] [File2] [File3]: 圧縮したいファイル(フォルダも可)

a: 拡張子による圧縮方式の自動判定

オプションの「-」: tarの場合、省略可

拡張子は、「.tar.gz」または「.tgz」が可

tarコマンドによるtar.gz解凍

「XXXX.tar.gz」をgzip解凍して、tarアーカイブを戻す場合

$ tar -zxvf xxxx.tar.gz
#あるいは
$ tar axvf xxxx.tar.gz

オプション

z: gzipの意味

xvf: tarアーカイブの解凍

a: 拡張子による圧縮方式の自動判定

オプションの「-」: tarの場合、省略可

拡張子は、「.tar.gz」または「.tgz」が可

.bz2について

bzip2コマンドで、bzip2圧縮ができる。

bzip2は、「gzip」よりも圧縮率が良いらしい。

bzip2コマンドによるbzip2圧縮
$ bzip2 -z [File1]  

-z: 圧縮を行う(デフォルトなので省略化)

任意のファイル名保存で、bzip2圧縮を行う場合
$ bzip2 [File] > xxxx.bz2
bunzip2コマンドによるbzip2解凍

「XXXX.bz2」を解凍する場合

$ bunzip2 XXXX.bz2  
#あるいは(おそらく)
$ bzip2 -d XXXX.bz2 > [File]

オプション

-d: 伸張を行う

.tar.bz2について

.tar.bz2とは、tarアーカイブ化して、 bzip2圧縮することを意味する。

tarコマンドによるtar.bz2圧縮

「XXXX.tar.bz2」として、tar.bz2圧縮アーカイブ化する場合

$ tar -jcvf XXXX.tar.bz2 [File1] [File2] [File3]
#あるいは
$ tar acvf XXXX.tar.bz2 [File1] [File2] [File3]

オプション

j: bzip2の意味

cvf: tarアーカイブ

[File1] [File2] [File3]: 圧縮したいファイル(フォルダも可)

a: 拡張子による圧縮方式の自動判定

オプションの「-」: tarの場合、省略可

tarコマンドによるtar.bz2解凍

「XXXX.tar.bz2」をbz2解凍して、tarアーカイブを戻す場合

$ tar -jxvf xxxx.tar.bz2
#あるいは
$ tar axvf xxxx.tar.bz2

オプション

j: bzip2の意味

xvf: tarアーカイブの解凍

a: 拡張子による解凍方式の自動判定

オプションの「-」: tarの場合、省略可

.tar.xz について

.tar.xzとは、tarアーカイブ化して、 xz圧縮することを意味する。

xz圧縮は、「gz」「bz2」よりも圧縮率が良いらしい。

tarコマンドによるtar.xz圧縮

「XXXX.tar.xz」として、tar.xz圧縮アーカイブ化する場合

$ tar -Jcvf XXXX.tar.xz [File1] [File2] [File3]
#あるいは
$ tar acvf XXXX.tar.xz [File1] [File2] [File3]

オプション

J: xzの意味、jの大文字

cvf: tarアーカイブ

[File1] [File2] [File3]: 圧縮したいファイル(フォルダも可)

a: 拡張子による圧縮方式の自動判定

オプションの「-」: 省略可能

tarコマンドによるtar.xz解凍

「XXXX.tar.xz」をxz解凍して、tarアーカイブを戻す場合

$ tar -Jxvf xxxx.tar.xz
#あるいは
$ tar axvf xxxx.tar.xz

xz圧縮の意味

J: xzの意味

xvf: tarアーカイブの解凍

a: 拡張子による解凍方式の自動判定

オプションの「-」: 省略可能

まとめ

よくよく全体をまとめてみると、拡張子さえちゃんと決めてあげれば、「tar acvf」と「tar axvf」で、 ファイル圧縮・解凍は問題ないこと分かった。

参考資料

qiita.com

linuxfan.info

webkaru.net

www.atmarkit.co.jp

*1:LINUXでもだいたい同じコマンド

*2:個人的には、2GBを超えるファイルで、すでに使わない方が無難なようにも思う。

*3:最近、4GB以上のファイルが圧縮できる、ZIP64フォーマットもあるようだが、解凍ツールが対応してない時もあるようだ。。Macユーザーには無用な知識かと、、、

*4:tar コマンドで色々できてしまうのでややこしさがある・・・