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のアーカイブと圧縮まとめ
ここで解説したことをまとめます。
ポイントは圧縮する前に複数のファイルやディレクトリを一つのファイルにまとめるというところです。
ここで解説したことが使えるようになると多くのファイルを整理して保存できるようになります。
ぜひ理解しておいてください。
コメント