アーカイブと圧縮
複数のファイルやディレクトリ
をまとめたファイル
のことをアーカイブ(書庫)と呼ぶ。
また、アーカイブするときにアーカイブファイルのサイズを小さくする
ことができれば、ファイルを転送・保存するときのデータ量を抑えることができる。
この小さくする処理を圧縮と呼ぶ。
ファイルをアーカイブする
ファイルをアーカイブするために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の教科書