Linuxのtar.gzはzipの事?Linuxの圧縮と解凍について。
こんにちは!
サイト管理人のYosukeです。
Linuxといえば、コマンドライン操作というイメージが強いんですが、Windows歴が長いと、
それが非常に難しく感じ、かつ面倒くさい印象がなかなか払拭出来ません。
でも、少しづつですが、コマンドラインならではの利点も垣間見えてきた、そんな今日この頃です。
今日は、最近まで意味がわからなかった、TARや.tar.gzについて、書こうと思います。
TAR(ター)とは?
複数のフォルダやファイルをひとまとめにするためのファイル形式です。
圧縮はしませんが、属性やファイル情報などをそのまま保持したり出来ます。
俗に、複数のものを丸めるイメージからターボールと言われているようです。
本当は違う意味があるそうですが、認識としてはまぁいいんじゃないかと思います。
こうやって作ったファイルの拡張子は、.tarになります。
.tar.gzは圧縮ファイル
先ほどのターボールは圧縮されていない1つのファイルでした。
保存したり、インターネットで配布する時は、なるべくデータサイズを小さく(圧縮)したいですよね。
それを、gzip
というコマンド(gunzip)を使って圧縮をおこないます。
これで作ったファイルの拡張子は.gz になります。
[ファイル名].tar を圧縮するので、[ファイル名].tar.gz になります。
tar
でまとめず最初からgzip
で圧縮かければいいのにね
Windowsユーザーの自分が思った疑問です。同じような疑問にぶつかる人多いんじゃないかな。
gzip
には、複数のファイルを圧縮して1つのファイルにしたり、フォルダごと圧縮することは出来ません。
なので、まず事前にTARでまとめる必要があるのです。
いっぽう、Windowsでもおなじみ、zip形式は複数のファイル(フォルダ)をまとめつつ圧縮できますよね。
zip形式で圧縮したり解凍したりする事は、zip
(unzip) というコマンドで可能なのですが、
こちらは追加インストールしないと使えない場合があり、LinuxやUnixに最初から必ず使える
.tar.gzで圧縮・解凍する方を慣例として使われているみたい。
TAR(GNU版)は高性能で圧縮も解凍もできます。
ごめんなさい、、ここまで書いてきた事が半分嘘みたいな話になってしまいますが、
Linuxに入っているTARはGNU版で、圧縮・解凍する機能(Lempel-Zivコーディング)が実装されています。
何を言いたいかというと、tar
コマンドで、圧縮・解凍する事が出来ます。
つまり、.tar.gzに圧縮したり、解凍したりする事は、実はtarコマンドだけでも出来るようになっています。
なので、tar
コマンドとgzip
コマンドをそれぞれ実行する必要はなく、tar
コマンドだけ知っておけばいいのですね。
.tar.gz 圧縮・展開のマンドの実例
tar [オプション] [ファイル名.tar.gz] [フォルダ名 ファイル名]
解凍する (x オプション)
ホームディレクトリにある、Sample.tar.gz を解凍する
$ tar xvzf ~/Sample.tar.gz
ホームディレクトリにある、Sample.tar.gz の中の、Sample.txtだけを解凍する
$ tar xvzf ~/Sample.tar.gz Sample.txt
圧縮する (c オプション)
ホームディレクトリにある、Sample.txt Sample.jpg Sample.mp3 を圧縮して、Sample.tar.gz にする
$ tar cvzf ~/Sample.tar.gz Sample.txt Sample.jpg Sample.mp3