【簡単理解】Linuxでの圧縮の方法とそのコマンドの使い方

linuxの圧縮方法
  • このエントリーをはてなブックマークに追加
  • Pocket

Linuxの圧縮方法はWindowsやMacとやり方が違ってくる。正確に言うと、同じようにGUIでも可能だが、コマンドで圧縮することの方が多いだろう。

このページではLinuxの圧縮方法についてまとめてお伝えしよう。

Linuxの圧縮

tarファイル:アーカイブ

Linuxに触れていると自然と「tar.gz」といった拡張子を目にすることがあるはずだ。これはLinuxのファイル圧縮形式の一つで、「アーカイブ」とも呼ばれる。

アーカイブは複数のファイルを一つにまとめるという作業だ。他にも形式として「tar.bz2」や「tar.xz」などが存在している。

現在最も圧縮率が高いのは「tar.xz」となっている。インターネット上で活動しているプロジェクト「The Linux Kernel Archives」でも使用されている。どの形式でもLinux上では「tar xvf」とするとアーカイブを解凍出来る。実際に目にするのは「linux-4.11.tar.xz」といった感じのファイル名となる。

なぜ拡張子が2つあるか?

ここでなぜ拡張子が2つ重なっているのか、疑問に思うかもしれない。

その理由は、ファイルなどをまとめるコマンドと、圧縮を実行するコマンドがそれぞれ用意されており、「tarコマンド」と「圧縮形式のコマンド」をセットで使用しているからだ。

「なぜ2つに分けているのか?」と疑問に思うかもしれない。

Unix哲学

そのあたりはUnix哲学と効率性の二つの理由があげられる。Unix哲学では「ひとつの事をうまく実行するプログラムを書くこと」という名言がある。

純粋に圧縮しないアーカイブのコマンドを用意して、圧縮するコマンドと別にしたほうが汎用的であり、各々やることがシンプルになるからだ。

しかしそうなると「一度tarを作成してからコマンドを再度たたいてgzやbz2、xzとして圧縮しなければならない」ので、大変面倒くさい。

コンピュータを使用しているエンジニアは基本的に面倒くさがりなので、tarコマンドから圧縮形式を指定して一度にアーカイブと圧縮を実行可能にしているので安心していただきたい。

実際にtarで圧縮アーカイブを作成および解凍してみよう。

Linuxの圧縮アーカイブを作成してみる

アーカイブを作成する場合は、オプションでどの圧縮形式を利用するかを指定する必要があるので注意しよう。

「zがgzip」「jがbzip2」「Jがxz」となっている。

gzip形式のtarアーカイブを作成する。

書式

tar zcvf <アーカイブの名前>.tar.gz <アーカイブしたいディレクトリやファイル名>

$ tar zcvf testarc.tar.gz testdir-gzip

tar-gzip

bzip2形式のtarアーカイブを作成する。

書式

tar jcvf <アーカイブの名前>.tar.bz2 <アーカイブしたいディレクトリやファイル名>

$ tar jcvf testarc.tar.bz2 testdir-bzip2

tar-bz2

xz形式のtarアーカイブを作成する。

書式

tar Jcvf <アーカイブの名前>.tar.xz <アーカイブしたいディレクトリやファイル名>

$ tar Jcvf testarc.tar.xz testdir-xz

tar-xz

アーカイブを解凍してみる

それぞれの形式のアーカイブを解凍展開するには以下のコマンドオプションを使用すればよい。Linuxの場合というより厳密にはGNUのユーティリティを使用している場合は、どの圧縮形式でも「xvf」オプションを指定すれば解凍出来る。なので日常範囲で使うのであれば「tar xvf <アーカイブ名>」とすれば大概は問題ない。

書式

tar xvf <アーカイブ名>

$ tar xvf testarc.tar.xz

tar-xvf

アーカイブの内容を確認したいとき

解凍時と同じく圧縮形式は自動判別してくれるのでとくに考えずにオプションを「tf」とすればどの圧縮形式でも中身を確認できる

書式

tar tf <アーカイブ名>

$ tar tf testarc.tar.xz

tar-tf

zcat、bzcat、xzcatなどを使用

よくある事例カーネルのパッチ適応

実は、tarを使用しなくてもアーカイブは可能となっている。

Linuxのパッチなどはtarを使用していない。その場合zcat、bzcat、xzcatなどを使用すると中身の確認やパイプを経由したパッチ作業が可能となっている。

それぞれzcat、bzcat、xzcatなどを使用すると、パイプに結果を引き渡しpatchコマンドでパッチを適応するなどといった動作も可能となっている。

一例をあげるとソースコードからのカーネルのバージョンアップするときのパッチ作業で以下のようなコマンドを叩くことになる。

$ cd /usr/src/linux

$ xzcat ../patch-4.10.13.xz | patch -Np1

ひとつ上のディレクトリにある「patch-4.10.13.xz」を「xzcat」を使用して参照しパイプでその結果をpatchコマンドへ引渡し、適応している。この例では対象のアーカイブが「xz」なので「xzcat」を使用している。それぞれ「gzip」はzcat」 「bzip2はbzcat」「xzはxzcat」に対応しており、上の例と同じことができるようになっている。

詳しいオプションはこちらを参照

tarのオプションを詳しくまとめている下記も参考に。

まとめ

このページではLinuxの圧縮方法についてまとめてお伝えしてきた。はじめは混乱するかもしれないが慣れればさほど難しくない。

実際にコマンドを叩いて、理解を深めていただければと思う。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できる。

短期間でエンジニアになる方法

・「まったくの初心者だけどエンジニアになりたい!」

・「プログラマーとして転職をしたい!」

という方はリナックスアカデミーの資料を見てみてください。短期間で未経験からエンジニアになることができるスクールとして15年間選ばれ続けてきた理由やノウハウが載った資料です。

エンジニアの入り口に立つために必要な勉強技術の最新動向本当に使えるIT資格学習に役立つ国からの奨励金などの情報が詰まっています。

無料で2,3日中にお手元にお届けします。


資料を見てみる

SNSでもご購読できます。

コメントを残す

*