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

南国のビーチパラソルの下で、Rプログラムを打ってる日常を求めて、、Daily Life of Bioinformatician in Kyobashi of Osaka

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

はじめに

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

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

色々とデータ圧縮方式 / アーカイブ方式について、まとめてみました。

LINUX/Macの基本コマンドの関連記事

skume.net

skume.net

skume.net

skume.net

skume.net

skume.net

skume.net

.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]  

#OR

#inputファイルを残して、圧縮する場合
gzip -k [File1]  

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

gzip [File1] [File2] [File3]  

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

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

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

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

gunzip XXXX.gz
#OR
gzip -d XXXX.gz

#inputファイルを残して、解凍する場合
gunzip -k XXXX.gz
#OR
gzip -d -k 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]

#元ファイルを残して、解凍する場合
bunzip2 -k XXXX.bz2  

オプション

-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」で、 ファイル圧縮・解凍は問題ないこと分かった。

補足

tarは何の略?

tar(ター)は、ファイルアーカイブのファイルフォーマットの一つで、tape archivesの略です。 また、このファイルフォーマットを処理するUNIXコマンドである、tarも意味します。

gzipは何の略?

gzip(ジー・ジップ)は、圧縮データのフォーマットあるいはデータ圧縮プログラムの1つで、「GNU zip」の略です。

参考資料

qiita.com

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

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

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

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