【アーカイブと圧縮ファイルの作成】

       このHPはアーカイブと圧縮ファイルの作成についてまとめたものです。



1-1 アーカイブの作成

複数のファイルやディレクトリをまとめたファイルのことを「アーカイブ(書庫)」と呼び、アーカイブファイルを作成することを「アーカイブする」という。
また、この時にアーカイブファイルのサイズを小さくすることができれば、ファイルを転送・保存するときのデータ量を抑えることができる。
データ量の内容を壊すことなくファイルサイズを小さくすることができ、これは「圧縮」と呼ばれる。








1-2  tarコマンド

tarはアーカイブファイルを扱うためのコマンド。複数のファイルやディレクトリを1つのアーカイブファイルにまとめたり、逆にアーカイブファイルから元のファイルを取り出すために利用する。

デフォルトのtarコマンドはファイルを圧縮しないが、
zオプションをつけるとgzipを使った圧縮/展開を、jオプションをつけると、bzip2を使った圧縮/展開をサポートする。
tarコマンドのオプションでは「-」を省略することができる。

<<書式>> tar  〔オプション〕  ファイル名








■コマンド例:1
次の例では、lpic-lev1、lpic-lev2、lpic-lev3の3つのファイルを「lpic.tar」という名前でアーカイブを作成している。

# ls -l
-rw-rw-r--    1 root root          2621   1月 10 08:25 lpic-lev1
-rw-rw-r--    1 root root           821  1月 10 08:25 lpic-lev2
-rw-rw-r--    1  root root          352  1月 10 08:25 lpic-lev3


#tar cvf lpic.tar lpic-lev1 lpic-lev2 lpic-lev33つのファイルのアーカイブの作成

# ls -l
-rw-rw-r--    1root root  10240  1月 23 19:02 lpic-lev1
-rw-rw-r--    1root root    2621  1月 21 18:37 lpic-lev2
-rw-rw-r--    1root root      61   1月 21 18:37 lpic-lev3
-rw-r--r--    1 root  root       20480  1月 24 20:03 lpic.tar  ←アーカイブファイルが出来ている




■コマンド例:2
次の例では、
/libのアーカイブを、SCSI接続テープドライブ(/dev/st0)に作成している。
# tar cvf /dev/st0 /lib



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

<<書式>> tar tf 【アーカイブファイル】

次の例では、■コマンド例:1で作成したアーカイブファイル「lpic.tar」の内容を確認している。

# tar tf lpic.tar
lpic-lev1
lpic-lev2
lpic-lev3



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

<<書式>> tar xf  【アーカイブファイル】


次の例では、■コマンド例:1で作成したアーカイブファイル「lpic.tar」を展開している。

#ls -l
-
rw-r--r--    1 root     root        10240  1月 24 20:03 lpic.tar 


#tar xf lpic.tarアーカイブファイルを展開する
       

# ls -l  
-rw-rw-r--    1 root root        
2621   1月 10 08:25 lpic-lev1 ←展開されている
-rw-rw-r--    1 root root         821  1月 10 08:25 lpic-lev2 ←展開されている
-rw-rw-r--    1 root root         352  1月 10 08:25 lpic-lev3展開されている
-rw-r--r--    1 root  root       10240  1月 10 10:38 lpic.tar





1-3  ファイル属性の保持

tarコマンドはファイルをコピーするだけでなく、ファイルのパーミッションやオーナー、タイムスタンプ等のファイル属性もそのままアーカイブする。
ただし、一般ユーザーでtarコマンドを実行する場合には、一部のファイル属性が維持できない場合がある。
そのため、完全なバックアップを取得するならば、root権限でtarコマンドを実行することが必要になる。















2-1 gzipコマンド

gzipはファイルの圧縮・展開を行うためのコマンド。gzipで圧縮したファイルには「.gz」という拡張子をつける。


<<書式>> gzip  〔オプション〕  対象ファイル名







次の例では、ファイル「lpic」を圧縮している。
gzipコマンドは、圧縮前のファイルの前に、拡張子「.gz」を付け加えて文字列を新しい圧縮ファイルに対して自動的に付ける。それに伴い、圧縮前のファイルを自動的に削除する。

■コマンド例:1
#ls -l
-rw-rw-r--    1  root   root       330  1月 20 20:48 ccna
-rw-rw-r--    1  root   root      
56701月 20 20:51lpic ←圧縮前の「lpic」が存在
-rw-rw-r--    1  root   root        207  1月 20 20:49 oracle-master

# gzip lpic ←圧縮を実行

# ls -l
-rw-rw-r--    1 root   root      330  1月 20 20:48 ccna
-rw-rw-r--    1 root   root    
1342  1月 20 20:51lpic.gz ←圧縮ファイル「lpic.gz」が作成され、「lpic」は削除されている。
-rw-rw-r--    1 root   root      207  1月 20 20:49 oracle-master




◆圧縮ファイルの展開

圧縮したファイルを展開してもとに戻すには「-d」オプションを適用する。
圧縮の場合と同様、
処理の過程で圧縮ファイルは自動的に削除される。
なお、「-d」オプションを使用する代わりに、「gunzip」コマンドを使ってもファイルを展開できる。

<<書式>> gzip  -d  対象展開ファイル名

#ls -l
-rw-rw-r--    1 root   root        330  1月 20 20:48 ccna
-rw-rw-r--    1 root   root       1342  1月 20 20:51
lpic.gz 
-rw-rw-r--    1 root   root        207  1月 20 20:49 oracle-master




#gzip -d lpic.gz 圧縮ファイル「lpic.gz」を展開


# ls -l
-rw-rw-r--    1 root   root        330  1月 20 20:48 ccna
-rw-rw-r--    1 root   root       5670  1月 20 20:51
lpic ←圧縮前のファイル「lpic」が作成され、圧縮ファイル「lpic.gz」は削除された
-rw-rw-r--    1 root   root        207  1月 20 20:49 oracle-master








2-2 tarからgzipを使用する

gzipコマンドは、単一のファイルに対して圧縮及び展開を行う。言い換えれば、複数のファイルをまとめて取り扱う機能はもっておらず、アーカイブ(書庫)は取り扱えない。

そこで現在のLinuxのtarコマンドでは、tarの実行結果をgzipに渡す機能が用意された。これを指定すれば、tarコマンドだけで、gzip形式での圧縮と展開が行える。

tarコマンドでgzip圧縮するには、cオプションと、zオプションを指定する。また拡張子として「.tar.gz」や「.tgz」という拡張子が使われる。



■コマンド例:1
# ls -l
-rw-rw-r--    1 root   root      
17431月 21 18:36lpic-lev1 ←lpic-lev1,lpic-lev2,lpic-lev3の3つのファイルをアーカイブし圧縮する
-rw-rw-r--    1 root   root      26211月 21 18:37lpic-lev2
-rw-rw-r--    1 root   root        611月 21 18:37lpic-lev3


# tar czf lpic.tar.gz lpic-lev1 lpic-lev2 lpic-lev3 ←圧縮アーカイブの作成


# ls -l
-rw-rw-r--    1 root       1743  1月 21 18:36 lpic-lev1
-rw-rw-r--    1 root       2621  1月 21 18:37 lpic-lev2
-rw-rw-r--    1 root         61  1月 21 18:37 lpic-lev3
-rw-r--r--    1 root        
7191月 21 18:40lpic.tar.gz ←圧縮アーカイブが作成されている


また、「.tar.gz」や「.tgz」ファイルを直接展開するには、「x」オプションと「z」オプションを合わせて指定する。


■コマンド例:2
# ls -l
-rw-r--r--    1 root    root      719  1月 21 18:40 lpic.tar.gz 



# tar xzf lpic.tar.gz  ←tarコマンドでta.gz形式のファイルを展開

# ls -l
-rw-rw-r--    1 root   root       1743  1月 21 18:36
lpic-lev1展開されている
-rw-rw-r--    1 root   root       2621  1月 21 18:37lpic-lev2展開されている
-rw-rw-r--    1 root   root         61   1月 21 18:37lpic-lev3展開されている
-rw-r--r--    1 root   root         719  1月 21 18:40 lpic.tar.gz













3-1 bzip2コマンド

bzip2形式の圧縮は、gzip形式と比較して一般に圧縮率が高くなる。その反面、処理には多くの演算を要し、
圧縮にかかる時間も少々長くなる。

【bzip2によるファイルの圧縮】

<<書式>>
bzip2 <オプション> <圧縮対象のファイル名>




次の例では、ファイル「lpic-lev1」を圧縮している。
また、gzipコマンドと同様に、新しい圧縮ファイルの名前は圧縮前のファイル名に、拡張子として「.bz2」を加えたものとなり、圧縮前の元のファイルを削除する。

■コマンド例:1

# ls -l
-rw-rw-r--    1 root   root      
1743  1月 21 18:36lpic-lev1 ←圧縮前の「lpic-lev1」ファイルが存在
-rw-rw-r--    1 root   root       2621  1月 21 18:37 lpic-lev2
-rw-rw-r--    1 root   root         61  1月 21 18:37 lpic-lev3


# bzip2 lpic-lev1 ←圧縮を実行

# ls -l
-rw-rw-r--    1 root   root      
510  1月 21 18:36lpic-lev1.bz2 圧縮ファイル「lpic-lev1.bz2」ファイルが作成され、「lpic-lev1」ファイルは削除
-rw-rw-r--    1 root   root       2621  1月 21 18:37 lpic-lev2
-rw-rw-r--    1 root   root         61  1月 21 18:37 lpic-lev3



◆圧縮ファイルの展開

圧縮したファイルを展開してもとに戻すには、gzipと同様「-d」オプションを適用する。
圧縮の場合と同様、
処理の過程で圧縮ファイルは自動的に削除される。
なお、「-d」オプションを使用する代わりに、「bunzip2」コマンドを使ってもファイルを展開できる。


<<書式>> bzip2  -d  対象圧縮ファイル名

■コマンド例:2
# ls -l
-rw-rw-r--    1 root   root        
510  1月 21 18:36lpic-lev1.bz2 ←圧縮ファイル
-rw-rw-r--    1 root   root       2621  1月 21 18:37 lpic-lev2
-rw-rw-r--    1 root   root         61   1月 21 18:37 lpic-lev3


# bzip2 -d lpic-lev1.bz2 ←圧縮ファイルを展開

# ls -l
-rw-rw-r--    1 root   root      
17431月 21 18:36lpic-lev1 ←圧縮前のファイル「lpic-lev1」が作成され、「lpic-lev1.bz2」は削除
-rw-rw-r--    1 root   root       2621  1月 21 18:37 lpic-lev2
-rw-rw-r--    1 root   root         61  1月 21 18:37 lpic-lev3





3-2 tarからbzip2を使用する

tarコマンドには、bzip2形式でファイル圧縮する機能もある。
tarでbzip2形式を利用するには「j」オプションを利用する。
また、圧縮ファイルは拡張子が「.tar.bz2」または「.tbz」になる。

■コマンド例:3

# ls -l
-rw-rw-r--    1 root   root      
17431月 21 18:36lpic-lev1 ←lpic-lev1,lpic-lev2,lpic-lev3の3つのファイルをアーカイブし圧縮する
-rw-rw-r--    1 root   root      26211月 21 18:37lpic-lev2
-rw-rw-r--    1 root   root        611月 21 18:37lpic-lev3


#tar cjf lpic.tar.bz2 lpic-lev1 lpic-lev2 lpic-lev3  ←圧縮アーカイブの作成

# ls -l
-rw-rw-r--    1 root   root       1743 1月 21 18:36 lpic-lev1 
-rw-rw-r--    1 root   root       2621 1月 21 18:37 lpic-lev2

-rw-rw-r--    1 root   root         61   1月 21 18:37 lpic-lev3
-rw-r--r--    1 root   root         821  1月 23 17:28 lpic.tar.bz2 圧縮アーカイブが作成されている



また、「.tar.bz2」ファイルを展開するには、jオプションを付けてtarコマンドを実行する。



■コマンド例:4

# ls -l
-rw-r--r--    1 root     root    821  1月 23 17:28 lpic.tar.bz2



#tar jxf lpic.tar.bz2 ←tarコマンドで「tar.bz2」形式のファイルを展開


# ls -l
-rw-rw-r--    1 root   root      
17431月 21 18:36lpic-lev1 ←展開されている
-rw-rw-r--    1 root   root      26211月 21 18:37lpic-lev2 展開されている
-rw-rw-r--    1 root   root      611月 21 18:37lpic-lev3 ←展開されている
-rw-r--r--     1 root  root         821  1月 23 17:28 lpic.tar.bz2










4-1 xzコマンド

bzip2よりもさらに圧縮効率の高いのが「xz」コマンドを使った圧縮。
xzコマンドにより圧縮・展開が行える。

<<書式>> xz 〔オプション〕 〔ファイル名〕







■コマンド例:1

以下の例では、ファイル「lpic-lev1」を圧縮する。拡張子は「.xz」。元ファイルは削除される。


# ls -l
-rw-r--r--. 1 root root115662 Mar 21 00:28lpic-lev1 ←圧縮前の「lpic-lev1」が存在
-rw-r--r--. 1 root root 115875 Mar 21 00:30 lpic-lev2
-rw-r--r--. 1 root root 115834 Mar 21 00:30 lpic-lev3

# xz lpic-lev1  ←圧縮を実行

# ls -l
-rw-r--r--. 1 root root  13068Mar 21 00:28  lpic-lev1.xz 圧縮ファイル「lpic-lev1.xz」ファイルが作成され、「lpic-lev1」ファイルは削除
-rw-r--r--. 1 root root 115875 Mar 21 00:30 lpic-lev2
-rw-r--r--. 1 root root 115834 Mar 21 00:30 lpic-lev3



◆圧縮ファイルの展開

圧縮したファイルを展開してもとに戻すには、「-d」オプションを適用する。
圧縮の場合と同様、
処理の過程で圧縮ファイルは自動的に削除される。
なお、「-d」オプションを使用する代わりに、「unxz」コマンドを使ってもファイルを展開できる。


<<書式>> xz  -d  対象圧縮ファイル名


# ls -l
-rw-r--r--. 1 root root  13068  Mar 21 00:28  lpic-lev1.xz
-rw-r--r--. 1 root root 115875 Mar 21 00:30 lpic-lev2
-rw-r--r--. 1 root root 115834 Mar 21 00:30 lpic-lev3


# xz -d lpic-lev1.xz ←圧縮ファイル「lpic-lev1.xz」を展開


# ls -l
-rw-r--r--. 1 root root  115662Mar 21 00:28  lpic-lev1  圧縮前のファイル「lpic-lev1」ファイルが作成され、「lpic-lev1.xz」ファイルは削除
-rw-r--r--. 1 root root 115875 Mar 21 00:30 lpic-lev2
-rw-r--r--. 1 root root 115834 Mar 21 00:30 lpic-lev3