【簡単理解】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

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

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する