目次
ごあいさつ
こんばんは。
助けてください。もに倉です。
今回はあまりに難解なLinuxでの圧縮・解凍関係のコマンドについて、
備忘録として使用用途ごとにまとめたいと思います。
なお、全部の形式を書こうと思うと途方もないので、
今回は「.gz」のみまとめようと思います(ネタバレ)。
コマンドの違い
そもそも、「gzip」とか「tar」とか、あと「zip」とか、違いがよくわかりません。
全部こう、ファイルのサイズを小さくしてるんだから同じじゃないの? と思ってしまうわけです。
というわけで、そこの違いからまとめます。
gzip
GNU zipの略です。
私はLinuxを触るようになって初めて知ったものでした。
特徴
ファイルを圧縮できるが、アーカイブはできない。
アーカイブって?
複数のファイルをまとめることです。
つまり、gzipはファイルひとつひとつをそれぞれ圧縮することはできるけど、
ファイルをひとつにまとめて一個のかたまりとして圧縮することはできないということですね。
tar
tape archiveの略らしいです。
特徴
アーカイブできるが、圧縮はできない。
……圧縮できないんだ?! と、驚きました。
zip
Linuxではあまり見ないイメージがありますね。
Windowsで圧縮と言えばコレ! ではないでしょうか。
特徴
アーカイブも圧縮もできる。
=フォルダ(ディレクトリ)をそのまま圧縮できるということで、わかりやすいですね。
というわけで
ここからは、「こういうときにはこのコマンドを使おう!」というかんじでまとめていきます。
圧縮
ファイルを圧縮する「gzip」
gzip *ファイル名*
gzipコマンドは指定したファイルを圧縮するコマンドです。
ディレクトリに対して普通に使おうとすると怒られます↓
gzip: *ディレクトリ名* is a directory -- ignored
オプション
オプション | 使い道 |
---|---|
-r | 指定したディレクトリ内のファイルをすべて圧縮する |
-k | 圧縮前のファイルを残す |
ディレクトリをまるごと圧縮する「tar czf」
tar czf *ディレクトリ名*.tar.gz *ディレクトリ名*
前述したように「gzip ディレクトリ名 -r」でもディレクトリ内のファイルを圧縮できるのですが、
そうじゃなくて、ディレクトリごとぴしっとひとつとして固めたい! というときに使います。
ちなみに、tarでアーカイブにする→アーカイブになったものをgzipで圧縮するという形になっています。
tarコマンド単体ではアーカイブしかできないので、こういう風になっているんですね。
tarコマンドはオプションがたくさんあって非常に難解なのですが、
単純にディレクトリを圧縮したいというだけなら今回ご紹介した叩き方で問題ないと思います。
オプション
オプション | 使い道 |
---|---|
c | アーカイブを作成する |
z | gzipで圧縮・解凍する |
f | アーカイブファイル名を指定する |
解凍
ファイルを解凍する「gunzip」あるいは「gzip -d」
gunzip *ファイル名.gz*
もしくは
gzip -d *ファイル名.gz*
どちらも同じ挙動です。
gz形式で圧縮されたファイルを解凍できます。
オプション
オプション | 使い道 |
---|---|
-r | 指定したディレクトリ内のファイルをすべて解凍する |
-k | 解凍前のファイルを残す |
ディレクトリをまるごと解凍する「tar xzf」
「.tar.gz」はtarコマンドで解凍しましょう。
例によって、単純にディレクトリを解凍したいというだけなら今回ご紹介した叩き方で問題ないと思います。
オプション
オプション | 使い道 |
---|---|
x | 解凍する |
z | gzipで圧縮・解凍する |
f | アーカイブファイル名を指定する |
……あれ、「zip」は?
(ネタバレ)の伏線回収です。
名前出してたのに使わなかったね?
というのも、前述の通り「.zip」はLinuxを触っているとほとんど目にすることがありません。
Linuxでzipを使わない理由を調べたのですが、それらしいものは見当たらず。
昔は理由があったらしい噂もあったのですが、今はほとんど理由がないみたいだし、普通に使ってもいいかもしれません。
ただ、お仕事ではみんなgzipやtarやを使うので、そっちに合わせたほうが無難です。
よって、今回は割愛させていただきました。
まとめ
これでよくわかんなくなってもこのブログを見ればどうにかなるぞ……。
たまごのひび割れから身が見え始めたエンジニア。
>gun zipの略です。
gzipはGNU zipの略ですね。
gunzipはGNU unzipの略です。
ご指摘ありがとうございます。
修正いたしました。