猫型iPS細胞研究所

Windows、Linux、iOS、DB、Network

Linux

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

投稿日:2013年1月1日 更新日:

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というアーカイブ名にしてもいいかもしれません。

Gooleアドセンス用336

Gooleアドセンス用336

-Linux
-

執筆者:

関連記事

linux

viで行を削除する

INDEX1 カーソルのある行から削除する2 指定した行を削除する3 特定の行で、カーソルの前後を削除する カーソルのある行から削除する ノーマルモードで dd でカーソルのある行を削除できます。 数 …

PHPでは文字列の比較に==を使用してはいけない

==を使用しても、文字列の比較にはなりません。 必ず「===」もしくは「strcmp」を使いましょう! 否定する場合は「!==」です。 もし「==」とすれば”00″は&#822 …

linux

ntpdの設定

ntpの設定は/etc/ntp.confで行います。 serverさえ設定してしまえばいいわけですが、 その他設定も少しあります。 INDEX1 restric2 server3 driftfile …

WindowsのeclipseからLinuxのPHPをリモートデバッグする(2)WindowsのEclipseの設定

前回の WindowsのeclipseからLinuxのPHPをリモートデバッグする(1)Linuxにxdebuをインストールする で紹介したxdeugのインストールが前提となります。 ここでリモートデ …

linux

ntpq -pの見方

ntpq -pで、ntpdの同期の状態を確認できます。 # ntpq -p remote refid st t when poll reach delay offset jitter ======== …