Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

tar

アーカイブを作成/復元する
2015/05/20 08:00

対応OS: linux , freebsd, solaris
tar {c|x|t|u|r|A} [v] [f AFILE] [z] FILE...

 tarコマンドは、ディレクトリ構成を含む、複数のファイルから、ひとつのTAR形式アーカイブファイルを作成したり、TAR形式アーカイブファイルの内容を表示、復元します。

 アーカイブとは、複数のファイルをひとまとめにすることです。アーカイブして作成したファイルをアーカイブファイルといい、cpio形式ファイルやTAR形式ファイルがあります。TAR形式アーカイブファイルは、ディレクトリ構成を忠実に復元できるため、元々パッケージファイルをネットワーク上で公開する目的で使用されました。現在でも、TARボールと呼ばれる、配布ファイル群(ディレクトリ構成含む)をTAR形式アーカイブファイルにまとめ、それをzip形式に圧縮して配布している例が多く見受けられます。

HINT!

 SolarisのtarコマンドとLinuxおよびFreeBSDのtarコマンドは異なるものです。Solarisのtarコマンドは元々UNIXシステムに入っていたコマンドであり、その主目的はテープ装置にファイルを格納するものでした。LinuxおよびFreeBSDのtarコマンドはGNU版のtarコマンドであり、従来のtarコマンドに独自の機能を追加しています

オプション
① c
ディレクトリ構成を含むディレクトリおよびファイルからTAR形式アーカイブファイルを作成します。
② x
TAR形式アーカイブファイルからディレクトリおよびファイルを復元します。
③ t
TAR形式アーカイブファイルに含まれるディレクトリおよびファイルの構成を一覧表示します。
④ u
TAR形式アーカイブファイルにファイルを追加します。指定したファイルの中で、TARアーカイブファイル内に存在しないファイル、または更新されたファイルを、追加あるいは更新します。
⑤ r
TAR形式アーカイブファイルの末尾にファイルを追加します。同一名のファイルも追加します。
⑥ A [Linux][FreeBSD]
TAR形式アーカイブファイルに別のTAR形式アーカイブファイルを結合して、ひとつのアーカイブファイルを作成します。
注意

 「c」「x」「t」「u」「r」「A」のオプションのうち、少なくともひとつは必ず指定しなければなりません。これらのオプションを機能文字または機能指定文字といい、それ以外のオプションを機能修飾子といいます

⑦ v
処理したファイルの一覧を詳しく表示します。TAR形式アーカイブファイルにまとめるファイルの数が多い時など、その処理経過を見ることができます。処理したファイルをカレントディレクトリからの相対パス名で表示します。
⑧ f AFILE

「AFILE」に、アーカイブファイルのファイル名またはデバイスファイル名を指定します。

 省略した場合は、「/dev/rmt0」(テープドライブのデバイスファイル)を指定したことになります。

 ディスク上のファイルとして出力する場合には、TAR形式アーカイブファイルであることを示す「.tar」という拡張子を付けます。また、オプション「z」を付けた場合には、「.tar.gz」という拡張子を付けます。

⑨ z [Linux][FreeBSD]
TAR形式アーカイブファイルを作成と同時に、zip形式の圧縮を行います。
HINT!

 tarコマンドのオプションは、オプションを示す「-」(ハイフン)を付けずに指定します

zip形式とgzip形式

 zip形式とはWindowsやUNIXで広く使われている圧縮形式です。一方gzip形式はUNIXでよく使われる圧縮形式です

引数
① FILE...
アーカイブするファイルまたはディレクトリを指定します。複数指定する場合は、ファイル名およびディレクトリ名をスペースで区切って指定します。ワイルドカードの指定も可能です。
ファイルをアーカイブする
[takeda]$ tar cvf dir01.tar dir01 
ディレクトリ「dir01」から、「dir01.tar」というアーカイブファイルを作成
dir01/
dir01/file11
dir01/file02
dir01/dir01/
オプション「v」を指定すると、処理が完了したファイル名とディレクトリ名を表示
ディレクトリ構成が保持されている
[takeda]$
アーカイブファイルの内容を表示する
[takeda]$ tar tf dir01.tar 
アーカイブファイル「dir01.tar」の内容を表示
dir01/
dir01/file11
dir01/file02
dir01/dir01/
[takeda]$
アーカイブファイルの内容を復元する
[takeda]$ ls 
dir01.tar
[takeda]$ tar xvf dir01.tar
アーカイブファイル「dir01.tar」を復元
オプション「v」を指定して、処理経過を表示
dir01/
dir01/file11
dir01/file02
dir01/dir01/
dir01 dir01.tar
[takeda]$ ls
dir01 dir01.tar
[takeda]$
アーカイブファイルにファイルを追加する
[takeda]$ tar tf dir01.tar 
dir01/
dir01/file11
dir01/file02
dir01/dir01/
処理前のアーカイブファイル「dir01.tar」の内容
[takeda]$ tar rvf dir01.tar file02 file11
アーカイブファイル「dir01.tar」に「file02」と「file11」を追加
オプション「v」を指定して処理経過を表示
file02
file11
[takeda]$ tar tf dir01.tar
dir01/
dir01/file11
dir01/file02
dir01/dir01/
file02
file11
追加された
[takeda]$
アーカイブファイルに別のアーカイブファイルを結合する
[takeda]$ tar tf dir01.tar 
dir01/
dir01/file11
dir01/file02
dir01/dir01/
処理前のアーカイブファイル「dir01.tar」の内容
[takeda]$ tar tf file.tar
file02
file11
アーカイブファイル「file.tar」の内容
[takeda]$ tar Af dir01.tar file.tar
「dir01.tar」に「file.tar」を結合
[takeda]$ tar tf dir01.tar
dir01/
dir01/file11
dir01/file02
dir01/dir01/
file02
file11
追加された
[takeda]$
アーカイブファイル内のファイルを更新する
[takeda]$ tar cvf dir01.tar dir01 
ディレクトリ「dir01」をアーカイブして「dir01.tar」を作成
dir01/
dir01/file11
dir01/file02
dir01/dir01/
[takeda]$ touch dir01/file02
「dir01」内のファイル
「file02」の日付を更新
[takeda]$ tar uvf dir01.tar dir01
オプション「u」を指定して、「dir01」をアーカイブ
dir01/file02
オプション「v」を指定して処理経過を表示すると、更新された「file02」だけが置き換えられていることがわかる
[takeda]$
アーカイブファイルの作成時に同時に圧縮する
[takeda]$ tar cvzf dir03/dir01.tar.gz dir01 
ディレクトリ「dir01」をアーカイブして、同時にzip形式の圧縮を行う
圧縮済みアーカイブファイル「dir01.tar.gz」を作成
dir01/
dir01/file11
dir01/file02
dir01/dir01/
[takeda]$ cd dir03
[takeda]$ ls
dir01.tar.gz
[takeda]$
zip形式で圧縮されたTAR形式アーカイブファイルを解凍と同時に復元する
[takeda]$ ls 
dir01.tar.gz
zip形式の圧縮済みアーカイブファイル
[takeda]$ tar xzvf dir01.tar.gz
オプション「x」と「z」を指定して、解凍と同時に復元
dir01/
dir01/file11
dir01/file02
dir01/dir01/
[takeda]$ ls
dir01 dir01.tar.gz
[takeda]$
HINT!

 lsコマンド・touchコマンド

ソフトのインストール

 UNIX系OSでのソフトの配布は、TARボールというTARアーカイブファイルをgzip形式で圧縮したもので行われています。最近では、インストール用のソフトが開発され、ユーザに対する利便性を向上しています。代表的なものにRedHatのRPMパッケージがあります。ただし、オープンソースであるLinuxやFreeBSDでは、ソースを配布し、自分のコンピュータ上でコンパイルしてアプリケーションをインストールすることも盛んに行われており、これにTARボールが使用されています。

関連タグ

UNIXコマンド辞典トップページに戻る

All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5