ファイルの圧縮・解凍 / アーカイブの作成・展開
ファイルの圧縮・解凍 / アーカイブの作成・展開
業務で利用することの多い、ファイルの圧縮と解凍について学びます。
ファイルの圧縮とは?
-
データを元のサイズよりも小さくすること。
データ量の大きなファイルを小さくすることでディスク容量の消費を減らしたり、
通信にかかる時間やネットワークへの負荷を抑えられる。
ファイルの解凍とは?
- 圧縮されたファイルを、元の状態に戻すこと。展開、伸張、復元とも呼ばれる。
さまざまな形式の圧縮方法
圧縮・解凍コマンドの種類
gzipコマンドで、ファイルを圧縮する
gzip [オプション] [ファイルのパス]...
gzipは複数のファイルが指定できますが、指定されたファイルごとに圧縮ファイルを作成します。
gzipで圧縮されたファイル名は、自動的に拡張子「.gz」が付けられます。
gzipコマンドを使って圧縮すると、元のファイルは削除されます。(残す方法は後で紹介)
gzipコマンドで、ファイルを圧縮する
実践①:圧縮するファイルを準備する
/etc/servicesをカレントディレクトリにコピーし、圧縮してみましょう 。
[user01@localhost ~]$ cp /etc/services ~ [user01@localhost ~]$ ls -l -rw-r--r-- 1 user01 user01 670293 2月 5 11:48 services
図
実践②:ファイルを圧縮する
では、圧縮してみましょう
[user01@localhost ~]$ gzip services [user01@localhost ~]$ ls -l -rw-r--r-- 1 user01 user01 136088 2月 5 11:48 services.gz
図
実践③:複数のファイルをまとめて圧縮する
複数のファイルを指定することも可能。ワイルドカード「*」も使えます。
[user01@localhost ~]$ gzip *.txt
上記のように指定する事で、ファイル名の最後に「.txt」と付くファイル名に対して、
gzipコマンドを実行することが出来ます。
gunzip 圧縮ファイルのパス
実践①:ファイルを解凍する
圧縮されたファイルを解凍するには、gunzipコマンドを使います
[user01@localhost ~]$ gunzip services.gz [user01@localhost ~]$ ls -l -rw-r--r-- 1 user01 user01 670293 2月 5 11:48 services
図
圧縮 (解凍)前のファイルを残す方法
ファイルを圧縮、または解凍する際に、圧縮前、または解凍前のファイルを残したいことがあります。
この場合、圧縮先や、解凍先の別のディレクトリを指定することで実現します。
圧縮前のファイルを残す方法
gzip -c 圧縮したいファイル > 圧縮先のファイルのパス
解凍前のファイルを残す方法
gunzip –c 解凍したいファイル > 解凍先のファイルのパス
実践②:圧縮、解凍前のファイルを残して圧縮、解凍する
[user01@localhost ~]$ mkdir /tmp/user01 [user01@localhost ~]$ gzip -c services > /tmp/user01/services.gz [user01@localhost ~]$ ls -l /tmp/user01 -rw-rw-r-- 1 user01 user01 136088 2月 5 11:53 services.gz [user01@localhost ~]$ ls -l -rw-r--r-- 1 user01 user01 670293 2月 5 11:48 services [user01@localhost ~]$ gunzip -c /tmp/user01/services.gz > /tmp/user01/services [user01@localhost ~]$ ls -l /tmp/user01 合計 1452 -rw-rw-r-- 1 user01 user01 670293 2月 5 11:55 services -rw-rw-r-- 1 user01 user01 136088 2月 5 11:53 services.gz
アーカイブファイルとは?
複数のファイルやディレクトリを一つにまとめることをアーカイブと呼び、
一つにまとめられたファイルを、アーカイブファイルと呼びます。
ファイルの長期保存やバックアップ、ファイルの転送などに利用できます。
tarコマンドでアーカイブファイルを扱う
アーカイブファイルをLINUXで扱うためには、tar コマンドを使用します。
このコマンドは、アーカイブファイルの作成や展開だけでなく、ファイルの圧縮などの処理を、
オプションで指定できます。
書式
tar [オプション] 対象のファイルのパス
主な特徴
- オプションに「-」を付けてもつけなくてもよい
- アーカイブファイルの作成時、元のファイルが削除されない
オプションの一覧
アーカイブファイルを作成し、複数のファイルを1つにまとめる
書式
tar cvf アーカイブファイルのパス アーカイブするディレクトリ
上記に示されたオプションは、下記のとおり
c:アーカイブファイルの作成
v:処理内容の表示
f:アーカイブファイル名の指定
事前準備①:アーカイブの対象となるディレクトリ(arc1)を作成
[user01@localhost ~]$ mkdir arc1
事前準備②:作成したディレクトリに、アーカイブの対象となるファイルを用意する
[user01@localhost ~]$ cp /etc/hosts /etc/services /etc/fstab arc1
図
事前準備③:ディレクトリにファイルが格納されているか確認する
[user01@localhost ~]$ ls -l arc1 合計 664 -rw-r--r-- 1 user01 user01 465 2月 6 05:11 fstab -rw-r--r-- 1 user01 user01 158 2月 6 05:11 hosts -rw-r--r-- 1 user01 user01 670293 2月 6 05:11 services
図
実践①:アーカイブ(arc1.tar)を作成する
※tarコマンドで作成したアーカイブファイル名の末尾は「.tar」が一般的です。
[user01@localhost ~]$ tar cvf arc1.tar arc1 arc1/ arc1/hosts arc1/services arc1/fstab
実践②:アーカイブファイルの作成を確認する
アーカイブ元のディレクトリと、アーカイブファイルの二つがあることがわかります。
[user01@localhost ~]$ ls -l drwxrwxr-x 2 user01 user01 48 2月 6 05:11 arc1 -rw-rw-r-- 1 user01 user01 675840 2月 6 05:47 arc1.tar
図
アーカイブに含まれたファイルの一覧を確認する
書式
tar -tvf アーカイブファイルのパス
実践:アーカイブに含まれたファイルの一覧を確認する
先ほど作成したアーカイブの中に含まれているファイルの一覧を表示します。
[user01@localhost ~]$ tar -tvf arc1.tar drwxrwxr-x user01/user01 0 2020-03-19 13:34 arc1/ -rw-r--r-- user01/user01 158 2020-03-19 13:34 arc1/hosts -rw-r--r-- user01/user01 670293 2020-03-19 13:34 arc1/services -rw-r--r-- user01/user01 465 2020-03-19 13:34 arc1/fstab
アーカイブファイルの展開
書式
アーカイブを展開(アーカイブ処理したモノを元に戻す作業)するには、xオプションを使う
tar xvf アーカイブファイル名 [-C 展開先ディレクトリのパス]
実践:アーカイブを展開する
arc1.tarファイルを展開
[user01@localhost ~]$ tar xvf arc1.tar arc1/ arc1/hosts arc1/services arc1/fstab
複数ファイルを圧縮する(アーカイブ+圧縮)
続いて、複数のファイルをまとめて、圧縮する方法を確認していきましょう。
複数のファイルを圧縮するためには、
- アーカイブによって、複数のファイルを1つにまとめ、
- 1つにまとまったアーカイブファイルを圧縮することで実現します。
LINUXで、複数ファイルを圧縮する二つの方法
LINUXで複数ファイルの圧縮を実現ためには、tarコマンドを使った次の2つの方法があります。
- tarコマンドで、アーカイブファイルに変換した後、圧縮する
- tarコマンドで、アーカイブファイルの変換と圧縮を、同時に行う
書式①:アーカイブファイルに変換した後、圧縮する場合
① tar cvf アーカイブファイルのパス アーカイブするディレクトリ ② gzip -c アーカイブファイルのパス
書式②:アーカイブファイルの変換と圧縮を、同時に行う場合
tar czvf アーカイブファイルのパス アーカイブするディレクトリ
図
1) 圧縮/アーカイブの対象のディレクトリ(arc2)、ファイルを用意する
[user01@localhost ~]$ mkdir arc2 [user01@localhost ~]$ cp /etc/hosts /etc/services /etc/fstab arc2 [user01@localhost ~]$ ls -l arc2 合計 664 -rw-r--r-- 1 user01 user01 465 2月 6 14:11 fstab -rw-r--r-- 1 user01 user01 158 2月 6 14:11 hosts -rw-r--r-- 1 user01 user01 670293 2月 6 14:11 services
図
2) アーカイブファイル(arc2.tar)を作成する
[user01@localhost ~]$ tar cvf arc2.tar arc2 arc2/ arc2/hosts arc2/services arc2/fstab [user01@localhost ~]$ ls -l drwxrwxr-x 2 user01 user01 48 2月 6 14:11 arc2 -rw-rw-r-- 1 user01 user01 675840 2月 6 14:19 arc2.tar
図
3) arc2.tarファイルを圧縮
[user01@localhost ~]$ gzip arc2.tar [user01@localhost ~]$ ls -l (省略) drwxrwxr-x 2 user01 user01 48 2月 6 14:11 arc2 -rw-rw-r-- 1 user01 user01 136642 2月 6 14:19 arc2.tar.gz
図
実践②: アーカイブファイルの変換と圧縮を、同時に行う場合
今度は、cオプション(アーカイブ作成)とzオプション(gzip圧縮)を指定することで、tarコマンドだけで
アーカイブと圧縮を実現します。
[user01@localhost ~]$ tar czvf arc3.tar.gz arc2 [user01@localhost ~]$ ls -l -rw-rw-r-- 1 user01 user01 136630 2月 6 09:12 arc3.tar.gz
図
圧縮されたアーカイブファイルの解凍・展開
書式①:カレントディレクトリに解凍・展開する場合
圧縮されたアーカイブを解凍・展開(圧縮を元に戻す作業)するには、x、zオプションを使う
tar xzvf アーカイブファイル名
書式②:解凍・展開先のディレクトリを指定した場合
「-Cオプション」を付けると別のディレクトリに解凍・展開できます。
デフォルトではカレントディレクトリに解凍・展開します。
tar xzvf アーカイブファイル名 -C 解凍・展開先のディレクトリ
図
実践:圧縮されたアーカイブファイルを解凍・展開する
[user01@localhost ~]$ tar xzvf arc3.tar.gz -C arc1 arc2/ arc2/hosts arc2/services arc2/fstab [user01@localhost ~]$ ls -l arc1 drwxrwxr-x 2 user01 user01 48 2月 6 14:11 arc2 -rw-r--r-- 1 user01 user01 465 2月 6 14:11 fstab -rw-r--r-- 1 user01 user01 158 2月 6 14:11 hosts