アーカイブと圧縮の基本(tar・gzip)

gzipで圧縮

圧縮にはgzipコマンドを使用します。
gzipコマンドで圧縮すると、拡張しに.gzが付加されて圧縮されます。

#gzip file.txt 圧縮
#gunzip file.txt.gz 解凍

ディレクトリを指定して圧縮・解凍するには-rオプションを使用します。
dir
└a.txt
└b.txt
といった構成でファイルがある場合、
gzip -r dir コマンドでファイルを全て圧縮できます。

# gzip -r dir
# ls -lat dir
合計 32
drwxr-xr-x 2 root root 4096 12月 25 07:34 .
drwxr-xr-x 3 root root 4096 12月 25 07:33 ..
-rw-r--r-- 1 root root   30 12月 25 07:08 b.txt.gz
-rw-r--r-- 1 root root   31 12月 25 07:07 a.txt.gz

みての通り、拡張子にgzがつき圧縮されています。gzipコマンドでは、ファイルが個別に圧縮されるだけです。
1つのファイルとして圧縮することはできません。

gunzipで解凍

gzipと同様にディレクトリを指定する場合は-rを使用します。

# gunzip -r dir
# ls -lat dir
合計 32
drwxr-xr-x 2 root root 4096 12月 25 07:37 .
drwxr-xr-x 3 root root 4096 12月 25 07:33 ..
-rw-r--r-- 1 root root    7 12月 25 07:08 b.txt
-rw-r--r-- 1 root root    7 12月 25 07:07 a.txt

tarでアーカイブする

1つのファイルにする(アーカイブする)には別のtarコマンドを使用します。
tarのオプションは1つ目の文字が第1オプションで、その後に続く文字列は第2オプションになります。

アーカイブを作成

tar cf [アーカイブファイル名] [ディレクトリ・ファイル名]
とします。
c アーカイブを新規に作成する 。compressの略。
-f, –file ファイル・ディレクトリの指定

#tar cf dir.tar dir

gzipだとの違いは、dir.tar.gzという1つのファイルなので、cdコマンドで中は確認できません。

アーカイブを展開

tar xf [アーカイブファイル名]
とします。
x アーカイブから取り出す。extractの略。
-f, –file ファイル・ディレクトリの指定

#tar xf dir.tar

アーカイブはきえません。

アーカイブを確認する

cdでは入れないので確認にはtar tf [アーカイブファイル名]とします。
t アーカイブ内の一覧表示。恐らくtreeの略。
-f, –file ファイル・ディレクトリの指定

# tar tf dir.tar
dir/
dir/b.txt
dir/a.txt

アーカイブにファイルを追加

tar rvf [アーカイブファイル名] [追加ファイル名]
r アーカイブの最後に追加。recompress?適当
-f, –file ファイル名
dir.tar
└a.txt
└b.txt
というアーカイブに
dir.tar
└c.txt
を追加する場合

# tar rf dir.tar dir/c.txt
# tar tf dir.tar
dir/
dir/b.txt
dir/a.txt
dir/c.txt

注意しなくてはいけないのは、
dir.tar
└a.txt
└b.txt
というアーカイブに
c.txt
を追加すると

# tar rf dir.tar c.txt
# tar tf dir.tar
dir/
dir/b.txt
dir/a.txt
c.txt

となることです。
アーカイブに入る階層が変わってきてしまいます。

アーカイブから特定のファイルを抜き出す

tar xf [アーカイブファイル名] [取り出したいファイル名(アーカイブ内のパス)]

#tar xf dir.tar dir/a.txt

ファイルを抜き出してもアーカイブから消えません。

アーカイブと圧縮

第2オプションにzをつけるとgzipを通して処理され圧縮もされます。
第2vオプションもつけて、処理したファイルの一覧も表示できます。
-z, –gzip, –ungzip gzipを通して処理する
-v, –verbose 処理したファイルの一覧を詳細に表示する

# tar cvzf dir.tar dir
dir/
dir/b.txt
dir/a.txt
dir/c.txt
# ls -lat
合計 32
drwxr-xr-x  3 root root 4096 12月 25 08:03 .
-rw-r--r--  1 root root  <strong>244</strong> 12月 25 08:03 dir.tar





drwxr-xr-x  2 root root 4096 / 12月 25 07:59 dir
drwxr-x--- 16 root root 4096 12月 25 07:07 ..

gzはついていませんが、圧縮されているのがわかります。
わかりやすいように、dir.tar.gzというアーカイブ名にしてもいいかもしれません。

タイトルとURLをコピーしました