アーカイブと圧縮
複数のファイルやディレクトリをまとめたファイルのことをアーカイブ(書庫)と呼ぶ。
また、アーカイブするときにアーカイブファイルのサイズを小さくすることができれば、ファイルを転送・保存するときのデータ量を抑えることができる。
この小さくする処理を圧縮と呼ぶ。
ファイルをアーカイブする
ファイルをアーカイブするためにLinuxではtarコマンドを使用する。
↓練習用ファイルの作成
$ mkdir dir1
$ touch dir1/file-{1..5}.txt
↓確認
$ ls dir1
file-1.txt file-2.txt file-3.txt file-4.txt file-5.txt
アーカイブファイルの作成
↓書式
cはcreateの意味で、新しくアーカイブファイルを作成する時に指定する。
fはfileの意味で、新しく作成するアーカイブファイル名を指定するために必ず必要
tar cf <アーカイブファイル> <アーカーブのファイルパス>
↓dir1ディレクトリをアーカイブする
$ tar cf dir1.tar dir
※tarコマンドは歴史的経緯から引数に-を付けない。ただし-を付けても同じ挙動になる。
アーカイブファイルの内容確認
↓書式
tはlistの意味。
fはfileの意味で、新しく作成するアーカイブファイル名を指定するために必ず必要
tar tf <アーカイブファイル> <アーカーブのファイルパス>
↓内容を確認
$ tar tf dir1.tar
dir1/
dir1/file-1.txt
dir1/file-2.txt
dir1/file-3.txt
dir1/file-4.txt
アーカイブの展開
アーカイブファイルを展開して元のファイルやディレクトリを取り出すには、xオプションを利用する。
書式
xはextract(抜く、抜き取る)のxを表す。
tar xf <アーカイブファイル>
↓アーカイブを展開する
アーカイブから元のファイルが復元できるかどうか確かめるために、dir1ディレクトリをいったん削除してからアーカイブを展開する。
$ ls
dir1 dir1.tar
$ rm -rf dir1 ←元のディレクトリ削除
$ tar xf dir1.tar ←アーカイブを展開
$ ls dir1 ←確認
file-1.txt file-2.txt file-3.txt file-4.txt
ファイルを圧縮する
gxipコマンド
gzipはファイルの圧縮・展開を行うためのコマンドである。
gzipで圧縮したファイルには慣習として、.gzという拡張子を付ける。
書式
$ gzip <圧縮元ファイル>
下記はテスト用として、psコマンドでプロセス一覧を表示した結果をps.txtというファイルに出力リダイレクトして作成したものである。
ps.txtのファイルサイズは約9.6キロバイトある。
$ ps aux > ps.txt
$ ls -lh
-rw-rw-r--. 1 vagrant vagrant 9.6K May 7 19:07 ps.txt
gzipコマンドで圧縮してみる
$ gzip ps.txt
$ ls -lh
-rw-rw-r--. 1 vagrant vagrant 2.3K May 7 19:07 ps.txt.gz
ご覧の通り約2.3キロバイトに圧縮された。
また、ps.txt.gzという(圧縮された)新しいファイルが残り、元のps.txtというファイルが削除される。
圧縮ファイルを展開してみる。
圧縮ファイルを展開するためには、-dオプションを指定する必要がある。
$ gzip -d ps.txt.gz
$ ls -lh
-rw-rw-r--. 1 vagrant vagrant 9.6K May 7 19:07 ps.txt
この時も、圧縮時と同様に展開されたファイルのみが残り、圧縮ファイルは削除される
その他のファイルを圧縮するコマンド
gzipコマンド以外にもファイルを圧縮するコマンドがある。
bzip2コマンド
特徴として、**gzip形式よりも圧縮率が高く、データ量をより小さくできる。**ただし、圧縮・展開にかかる時間はgzipより長いため、時間よりファイルサイズを重視する場合に使われることが多い。
zipコマンド
zipはtarやgzipと違ってあーカーブと圧縮を同時に行う。なので、複数のファイルやディレクトリをまとめて一つのファイルに圧縮できる。
なお、zipコマンドは標準ではインストールされていないので、使用するにはインストールする必要がある。
参考
新しいLinuxの教科書