tarコマンドの使い方

Linux でファイルの圧縮や解凍を行うコマンドに tar コマンドがあります。このコマンドは、ファイル作成や解凍、展開などを行うコマンドです。 tar コマンドを使って複数のファイルを1つのファイルにアーカイブしたり、アーカイブしたファイルから特定のファイルを抽出したりできます。

スポンサーリンク




tar コマンドを使ったアーカイブファイルへの格納と抽出

アーカイブファイルの新規作成

tar コマンドを使ってアーカイブファイルを新規作成します。アーカイブの意味は、複数のファイルを1つのファイルにまとめることで、アーカイブファイルとは、まとめられた1つのファイルのことです。まずは、一番単純なアーカイブファイルの作り方です。カレントディレクトリの test01.txt と test02.txt の二つのファイルをアーカイブファイル test91.tar に格納します。

user01@debian:~$ tar -cf test91.tar test01.txt test02.txt

オプションの指定順なのですが。 f は、一番最後に指定します。 f の後は、アーカイブファイル名を指定するので -fc だと、 c という名前のアーカイブファイを作成し、 test91.tar ファイルを格納しようとしてエラーとなります。

ディレクトリをアーカイブすることも可能です。抽出時には、そのままの構成(ディレクトリを含んだ構成)で抽出されます。カレントディレクトリに DIR ディレクトリがあり、その中に test03.txt と test04.txt が含まれているとします。そのディレクトリをアーカイブファイル test92.tar に格納します。

user01@debian:~$ tar -cf test92.tar DIR

抽出時には、カレントディレクトリに DIR/test02.txt とディレクトリに含められた状態で抽出されます。

注意点は、アーカイブファイルに格納するファイルを指定する場合、ファイルのフルパスをしてすると、抽出時に余分なディレクトリが作成されてしまいます。例えば、格納ファイルの指定を /home/user01/test01.txt と指定すると、抽出時には、カレントディレクとりに home/user01/test01.txt と余分なディレクトリを作成してしまいます。これは、格納時にファイル名の先頭 / を削除して格納してしまうためです。

アーカイブファイルの情報確認

tar コマンドでアーカイブファイルの情報を確認します。アーカイブファイルは、前述のとおり様々な構成で格納されているので、抽出前に格納状態を確認する必要があります。アーカイブファイルの状態を確認するには、次のようにします。

user01@debian:~$ tar -tf test91.tar
test01.txt
test02.txt

user01@debian:~$ tar -tf test92.tar
DIR/
DIR/test04.txt
DIR/test03.txt

ディレクトリの構成も含め格納されているファイルの情報を確認できます。また、前述の格納ファイルフルパス指定の現象は、具体的には以下のように確認できます。

user01@debian:~$ tar -cf test93.tar /home/user01/test01.txt /home/user01/test02.txt
tar: メンバ名から先頭の `/' を取り除きます

user01@debian:~$ tar -tf test93.tar
home/user01/test01.txt
home/user01/test02.txt

カレントディレクトリのファイルをすべて格納する場合は、以下のようにします。

カレントディレクトリの構成
user01@debian:~/WORK$ ls -l *
-rw-r--r-- 1 user01 user01   39 2008-08-21 11:00 test01.txt
-rw-r--r-- 1 user01 user01   39 2008-08-21 11:00 test02.txt
-rw-r--r-- 1 user01 user01   39 2008-08-21 11:00 test05.txt

DIR:
合計 8
-rw-r--r-- 1 user01 user01 39 2008-08-21 11:00 test03.txt
-rw-r--r-- 1 user01 user01 39 2008-08-21 11:00 test04.txt

コマンド実行
user01@debian:~/WORK$ tar -cf /home/user01/test93.tar *

実行結果
user01@debian:~/WORK$ tar -tf /home/user01/test93.tar
DIR/
DIR/test04.txt
DIR/test03.txt
test01.txt
test02.txt
test05.txt

アーカイブファイルをカレントディレクトリに作成すると、そのファイルまで格納されてしまうのでファイルの作成場所には、別のディレクトリを指定します。また、抽出後のことを考えると、対象のファイルをディレクトリにまとめ、そのディレクトリを格納するほうがよいと思われます。(カレントディレクトリに大量のファイルやディレクトリが抽出されてしまうので。)

既存アーカイブファイルへのファイル追加格納と抽出

tar コマンドを使って既存のアーカイブファイルに追加でファイルを格納する場合は、以下のようします。

既存アーカイブファイルの情報
user01@debian:~$ tar -tf test91.tar
test01.txt
test02.txt

コマンド実行
user01@debian:~$ tar -rf test91.tar test05.txt

追加後のアーカイブファイルの情報
user01@debian:~$ tar -tf test91.tar
test01.txt
test02.txt
test05.txt

アーカイブファイルからファイルを抽出する場合は、以下のようにします。

アーカイブファイルの情報確認
user01@debian:~$ tar -tf test91.tar
test01.txt
test02.txt
test05.txt

コマンド実行
user01@debian:~$ tar -xf test91.tar test01.txt

また、ディレクトリに含まれたファイルを抽出する場合は、ディレクトリを含めたファイル名を指定します。

アーカイブファイルの情報確認
user01@debian:~$ tar -tf test92.tar
DIR/
DIR/test04.txt
DIR/test03.txt

コマンド実行
user01@debian:~$ tar -xf test92.tar DIR/test04.txt

格納されているディレクトリを抽出する場合は、ディレクトリを指定します。

アーカイブファイルの情報確認
user01@debian:~$ tar -tf test92.tar
DIR/
DIR/test04.txt
DIR/test03.txt

コマンド実行
user01@debian:~$ tar -xf test92.tar DIR

アーカイブファイルの格納ファイルをすべて抽出したい場合は、ファイルの指定を省略します。

アーカイブファイルの情報確認
user01@debian:~$ tar -tf test91.tar
test01.txt
test02.txt
test05.txt

コマンド実行
user01@debian:~$ tar -xf test91.tar

アーカイブファイルの圧縮と解凍

tarコマンドは、本来アーカイブファイルへのファイルの格納と抽出を実行するコマンドなのですが、作成したアーカイブファイルを圧縮したり、圧縮されたアーカイブファイルを解凍し、ファイルを抽出することができます。アーカイブファイルを圧縮する場合は、次のようにします。(gzip形式で圧縮する場合)

user01@debian:~$ tar -czf test94.tar.gz test01.txt test02.txt

格納ファイルの内容を確認する場合は、次のようにします。

user01@debian:~$ tar -tzf test94.tar.gz
test01.txt
test02.txt

ファイルを解凍し、抽出する場合は、次のようにします。

user01@debian:~$ tar -xzf test94.tar.gz

圧縮された、アーカイブファイルにファイルの追加格納は、手動で解凍後格納し圧縮します。

コマンド実行
user01@debian:~$ gunzip test94.tar.gz ; tar -rf test94.tar test05.txt ; gzip test94.tar

アーカイブファイルの情報確認
user01@debian:~$ tar -tzf test94.tar.gz
test01.txt
test02.txt
test05.txt

bzip2 方式で圧縮する場合は、 z オプションの代わりの j オプションを使用します。( bzip2 方式の場合、ファイル名は、 tar.bz2 となります。)

オプションのまとめ

tar コマンドのオプションのまとめです。機能指定文字は、コマンドの動作を決める指定です。アーカイブファイルの作成、表示、抽出、追加など基本動作を指定します。

機能指定文字
機能指定文字 内容
c アーカイブファイルを新規に作成します。同じファイル名がある場合、上書きします。
t アーカイブファイルに含まれているファイルを表示します。ディレクトリが格納されている場合は、その情報も表示されます。
x アーカイブファイルからファイルを抽出します。抽出先に同じファイル名がある場合、上書きされます。
r 既存のアーカイブファイルに新たにファイルを追加します。すでに格納されているファイル名があったとしても追加できてしまいます。抽出時には、「t」オプションで表示される順に抽出されるので、順番に上書きされ最後に格納されているファイルの内容で抽出されてしまいます。

機能指定文字以外のオプションです。

おもなオプション
オプション 内容
f 処理対象のアーカイブファイルをしてします。オプションをハイフン「-」つきで指定する場合、「f」次にほかのオプションがこないようにします。
v 処理するファイルの詳細を表示しながらアーカイブします。
z gzip方式(ファイル名に「.gz」がついているファイル)の圧縮や解凍を同時に行う場合にしてします。
j bzip2方式(ファイル名に「.bz2」がついているファイル)の圧縮や解凍を同時に行う場合にしてします。
スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする