【Linuxの基礎】Linuxのアーカイブと圧縮について解説する!

Web技術
スポンサーリンク
Linux初心者
Linux初心者

Linuxのアーカイブってなんだろう?

Linuxでファイルを圧縮するにはどうすば良いいの?

誰か詳しく教えて!

こういった疑問に答えていきます。

この記事を読めば
  • 「アーカイブ」と「圧縮」の違いがわかるようになる
  • Linuxで「アーカイブ」を扱えるようになる
  • Linuxでファイルを圧縮できるようになる
  • Linuxで圧縮ファイルからファイルを取り出すことができるようになる

WindowsやMac OS Xでよく使われるzipファイルは、Linuxのtarファイルやgzipファイルのようにアーカイブと圧縮を区別しないのでLinux初心者は戸惑うかもしれません。

普段SEとしてLinuxを扱っている僕が、わかりやすく解説していきます。

アーカイブファイルと圧縮ファイル

複数のファイルをメールで送信したり、バックアップのために保管したりする際には、これらを一つのファイルにまとめておくと便利です。

複数のファイルやディレクトリをまとめたファイルのことを「アーカイブ」と呼びます。

そして、ファイルをまとめてアーカイブファイルを作成することをアーカイブすると言います。

一般に、ファイルには多くの冗長性があります。

データを壊すことなく、ファイルのサイズを小さくすることができます。

これを圧縮と言います。

アーカイブと圧縮

WindowsやMac OS Xで一般的に使われるzipファイルはこのアーカイブと圧縮を同時に行います。

Linuxではアーカイブしてから圧縮するというように別々に処理をするのが普通です。

tarコマンド

tarはアーカイブファイルを扱うためのコマンドです。

複数のファイルやディレクトリを1つのアーカイブファイルにまとめたり、逆にアーカイブファイルから複数のファイルやディレクトリを取り出すことができます。

アーカイブファイルの作成

tarコマンドでファイルをアーカイブするには次のようにします。

tar cf <アーカイブファイル> <アーカイブ元ファイルパス>

ここで最初のcはcreateの頭文字で新しいアーカイブファイルを作成するように指定しています。

次のfはfileの頭文字で「f <アーカイブファイル>」として、アーカイブファイル名を指定します。

tarコマンドでファイルを引数にとる場合、必ずfをつけてください。

$ tar cf dir.tar dir

上記のようにtarコマンドを実行すると、dirというディレクトリとその中にあるファイル全てが、dir.tarというアーカイブファイルにまとめられます。

アーカイブファイルの内容を確認する

作成したアーカイブファイルの内容を確認するにはtオプションを使用します。

tar tf <アーカイブファイル>

tオプションをつけると、アーカイブファイルの中に含まれるファイル一覧が出力されます。

cオプションでアーカイブファイルを作成したら、目的のファイルが正しくアーカイブされているか確認しておきましょう。

$ tar tf dir.tar
dir/
dir/file1.txt
dir/file2.txt
dir/file3.txt

アーカイブの展開をする

アーカイブファイルを展開して下のファイルやディレクトリを取り出すには、xオプションを使用します。

tar xf <アーカイブファイル>

xはextractのxを表しています。

なお、tarコマンドで展開されてできたファイル名が既存のファイルと同名であった場合、既存のファイルを上書きすることになるので注意が必要です。

展開する前に同名のファイルが存在しないか確認しましょう。

gzipコマンド

gzipコマンドはファイルの圧縮・展開を行うためのコマンドです。

gzipで圧縮したファイルは習慣として.gzという拡張子をつけます。

gzip <圧縮ファイル>

例えば、dir.tarというアーカイブファイルを圧縮するには

$ gzip dir.tar

と入力すればOKです。

アーカイブファイルdir.tarが消え、dir.tar.gzという圧縮ファイルが作成されます。

圧縮したファイルを展開して元に戻すには、-dオプションを使用します。

$ gzip -d dir.tar.gz

こうすると圧縮ファイルであるdir.tar.gzが消え、dir.tarというアーカイブファイルが作成されます。

bzip2コマンド

bzip2は、gzipと同様にファイルを圧縮・展開を行うコマンドです。

bzip2はgzipと比べて圧縮率が高く、データ量をより小さくできるという特徴があります。

ただし、圧縮や展開の処理には時間がかかります。

そのため、時間よりも圧縮率が求められる場合に利用されます。

bzip2コマンドのオプションはgzipと同じように設計されているため、gzipコマンドが使える方なら誰でも使えるはずです。

bzip2 <圧縮元ファイル>

bzip2で圧縮したファイルにはbz2という拡張子がつけられます。

bzip2で圧縮したファイルは-dオプションで展開することができます。

bzip2 -d dir.txt.bz2

zipコマンド

zipコマンドはアーカイブと圧縮を同時に行うコマンドです。

.zipという拡張子がつけられ、zipファイルと呼ばれます。

WindowsやMac OS Xではよく使われています。

これらのOSのユーザとデータをやり取りする時のために覚えておくと便利です。

Linuxでzip形式のファイルを扱うには、圧縮するためのzipコマンドと、展開するためのunzipコマンドの両方が必要になります。

これらのコマンドは多くのLinuxディストリビューションで標準インストールされていません。

そのため、コマンドが見つからない場合は、yumを使ってインストールしてください。

# yum install zip unzip

zipファイルの作成

zipコマンドでファイルやディレクトリを圧縮するためには、次のようにします。

zip -r <圧縮ファイル> <圧縮対象パス>

例えば、dirというディレクトリをdir.zipというファイルに圧縮するとします。

$ zip -r dir.zip dir
adding: dir/ (stored 0%)
adding: dir/file1.txt (stored 0%)
adding: dir/file2.txt (stored 0%)

ここで-rオプションは指定したディレクトリの下に含まれるファイルもまとめて圧縮するというオプションです。

zipファイルの展開

圧縮したzipファイルを展開するには、unzipコマンドを使います。

$ unzip dir.zip
Archive: dir.zip
creating: dir/
extracting: dir/file1.txt
extracting: dir/file2.txt

パスワード付きzipファイル

zipファイルを作成するときにパスワードを設定することができます。

ここでパスワードを設定するとパスワードを知っている人しか展開できません。

パスワード付きzipファイルを作成するには、-eオプションを使用します。

$ zip -er dir.zip dir
Enter password:
Verify password:
adding: dir/ (stored 0%)
adding: dir/file1.txt (stored 0%)
adding: dir/file2.txt (stored 0%)

パスワード付きzipファイルを展開する時は、通常のzipファイルの展開と同じようにunzipコマンドで展開できます。

$ unzip dir.zip
Archive: dir.zip
creating: dir/
[dir.zip] dir/file1.txt password:
extracting: dir/file1.txt
extracting: dir/file2.txt

unzipは対象のzipファイルがパスワード付きの場合はパスワード入力のプロンプトが表示されます。

Linuxのアーカイブと圧縮まとめ

ここで解説したことをまとめます。

Linuxの圧縮ファイルの作成は2ステップ
  1. アーカイブファイルを作成する
  2. アーカイブファイルから圧縮ファイルを作成する。

ポイントは圧縮する前に複数のファイルやディレクトリを一つのファイルにまとめるというところです。

ここで解説したことが使えるようになると多くのファイルを整理して保存できるようになります。

ぜひ理解しておいてください。

コメント

タイトルとURLをコピーしました