Scroll to navigation

TAR(1) GNU TAR Manual TAR(1)

名前

tar - アーカイブユーティリティ

書式

伝統的な使用法

tar {A|c|d|r|t|u|x}[GnSkUWOmpsMBiajJzZhPlRvwo] [ARG...]

UNIX スタイルの使用法

tar -A [OPTIONS] ARCHIVE ARCHIVE

tar -c [-f ARCHIVE] [OPTIONS] [FILE...]

tar -d [-f ARCHIVE] [OPTIONS] [FILE...]

tar -t [-f ARCHIVE] [OPTIONS] [MEMBER...]

tar -r [-f ARCHIVE] [OPTIONS] [FILE...]

tar -u [-f ARCHIVE] [OPTIONS] [FILE...]

tar -x [-f ARCHIVE] [OPTIONS] [MEMBER...]

GNU スタイルの使用法

tar {--catenate|--concatenate} [OPTIONS] ARCHIVE ARCHIVE

tar --create [--file ARCHIVE] [OPTIONS] [FILE...]

tar {--diff|--compare} [--file ARCHIVE] [OPTIONS] [FILE...]

tar --delete [--file ARCHIVE] [OPTIONS] [MEMBER...]

tar --append [-f ARCHIVE] [OPTIONS] [FILE...]

tar --list [-f ARCHIVE] [OPTIONS] [MEMBER...]

tar --test-label [--file ARCHIVE] [OPTIONS] [LABEL...]

tar --update [--file ARCHIVE] [OPTIONS] [FILE...]

tar --update [-f ARCHIVE] [OPTIONS] [FILE...]

tar {--extract|--get} [-f ARCHIVE] [OPTIONS] [MEMBER...]

注記

この man ページは GNU tar の簡単な説明である。 使用例や推奨される使い方を含む詳しい議論については、texinfo 形式の GNU Tar Manual をご覧になっていただきたい。info リーダーと tar 関連文書が御使用のシステムに正しくインストールされているなら、コマンド

info tar

で詳細なマニュアルが読めるはずである。

詳細なマニュアルは、 emacs(1) の info モードでも閲覧することができる。 また、下記のサイトに行けば、様々な形式にした詳細マニュアルのオンライン版を見つけることができる。

この man ページと GNU Tar Manual の内容に食い違いがある場合は、後者の方が信頼できる情報源である。

説明

GNU tar は、アーカイブプログラムである。 アーカイブプログラムとは、複数のファイルを 1 個のファイル (アーカイブ) に格納したり、そうしたアーカイブを操作したりするためのプログラムだ。 アーカイブは、通常ファイルであってもよく、デバイスであってもよい (後者の一例がテープドライブであり、このプログラムの名前は、そこから来ている。 すなわち、tape archiver ということだ)。 そうしたファイルやデバイスは、ローカルマシンにあってもよく、リモートマシンにあってもよい。

オプション形式

GNU tar のオプションは、3 つの異なる形式で指定できる。伝統的なスタイル では、最初の引き数は、オプション文字の集まりであり、それに続くすべての引き数は、 そうしたオプションが引き数を要求する場合に、その引き数になる。 なお、そうした引き数は、オプション文字と同じ順番で読み込まれる。 すべてのオプションの処理が終わった後で、コマンドラインに残っている単語があれば、 それは、オプションとは関係のない引き数として扱われる。 すなわち、ファイルやアーカイブメンバーの名前である。

たとえば、c オプションは、アーカイブの作成を指示し、v オプションは、 やっていることを表示するように要求し、f オプションは、 操作対象のアーカイブ名を引き数に取る。 伝統的なスタイルで書かれた次のコマンドは、ディレクトリ /etc のすべてのファイルをアーカイブファイル etc.tar に格納し、どんなファイルをアーカイブに入れたか、詳しいリストを表示せよと tar に命じている。

tar cfv etc.tar /etc

UNIX スタイル、すなわち短いオプション形式では、 他のコマンドラインユーティリティと同様に、各オプション文字には、 1 個のダッシュがその前に付く。オプションが引き数を取る場合は、引き数はその後に続く。 引き数は、コマンドライン上の独立した単語としてオプションとの間にスペースを置いて指定してもよく、 スペースを挟まずオプションに直接続けてもよい。ただし、オプションの引き数が任意である (訳注: あることも、ないこともある) 場合は、その引き数は -g/tmp/snar.db のように、オプション文字の後にスペースなしで続けなければならない。

引き数をとらないオプションは、1 個のダッシュの後に何個でもまとめて指定できる。 たとえば、-vkp のようにだ。引き数を (必須であれ任意であれ) 取るオプションがあったら、ひとつにまとめたオプションの最後に置けばよい。 -vkpf a.tar がその一例である。

上で例示したコマンドは、 短いオプション形式で書けば、以下のようになるだろう。

tar -cvf etc.tar /etc
または、
tar -c -v -f etc.tar /etc

GNU スタイル、すなわち長いオプション形式では、 各オプションは、2 個のダッシュに続く意味を持った名前であり、 小文字とダッシュから構成されている。使用に当たって、長いオプションは、 曖昧さを生じないかぎり、最初の数文字に短縮できる。長いオプションに対する引き数は、 そのオプションの直後にコマンドライン上の独立した単語として (訳注: すなわち、間にスペースを置いて) 指定するか、あるいは、オプションとの間を等号 (=) で区切り、等号の前後にはスペースを入れずに指定する。 指定するかしないかが任意の引き数では、必ず後者の書式を使わなければならない。

上記のコマンド例をこの形式で書くには、次のようないくつかの方法がある。

tar --create --file etc.tar --verbose /etc
または (オプションをいくつか短縮して)、
tar --cre --file=etc.tar --verb /etc
[訳注]:
二番目の用例は、失敗すると思う。現在では、--verbose のほかに --verbatim-files-from というオプションもあるので、 --verb では曖昧になってしまうのだ。

オプションは、3 種の形式すべてを混ぜて使うことができるが、 伝統的なオプションを混ぜて使うのはお勧めできない。

操作モード

以下に列挙したオプションは、GNU tar にかくかくしかじかの操作をせよと命ずるものだ。 指定するのは、この内のただ 1 つでなければならない。 オプションの引き数ではない引き数がどんな意味になるかは、要求した操作モード次第である。

[訳注]
以下、この「操作モード」セクションの中で、単に「引き数」とだけ言ったときは、 オプションの引き数ではない引き数のことである。
アーカイブを別のアーカイブの末尾に追加する。 引き数は追加するアーカイブの名前と見なされる。すべての追加するアーカイブは、 追加される側のアーカイブ (訳注: これは -f オプションの引き数で指定する) と同じ形式でなければならない。そうでないと、作成されたアーカイブが、GNU 以外の tar の実装で使えなくなる可能性がある。 なお、注意してほしいが、2 個以上のアーカイブを引き数として指定した場合に、1 番目のアーカイブ以外のアーカイブのメンバーが、作成されたアーカイブでアクセスできるのは、 -i (--ignore-zeros) オプションを使用した場合だけである。

圧縮したアーカイブの結合はできない。

新しいアーカイブを作成する。 引き数はアーカイブに入れるファイルの名前である (訳注: 作成するアーカイブファイルの名前は、-f オプションの引き数で指定する)。 --no-recursion オプションが指定されないかぎり、ディレクトリは再帰的にアーカイブされる。
アーカイブとファイルシステムの間に相違があるかどうかを調べる。 引き数は任意だが、指定するなら、比較したいアーカイブのメンバーである。 指定しない場合は、カレントワーキングディレクトリを指定したものと見なされる。 (訳注: info マニュアルの説明は少し違い、「メンバーを 1 つも指定しない場合、 tar は全アーカイブを比較する」となっている。)
アーカイブから削除する。引き数はアーカイブから削除するメンバーの名前である。少なくとも 1 つは引き数を指定しなければならない。

このオプションは圧縮したアーカイブには使えない。 これと等価な短いオプションはない。

アーカイブの最後にファイルを追加する。引き数の意味は、-c (--create) と同じである。
アーカイブの内容一覧を表示する。引き数は任意である。 引き数が指定された場合は、表示すべきメンバーの名前となる。
アーカイブのボリュームラベルをテストして終了する。 引き数を指定せずに使用すると、ボリュームラベルを (もしあれば) 表示し、ステータス 0 で終了する。1 つ以上のコマンドライン引き数を指定すると、tar はボリュームラベルを各引き数と比較する。引き数にマッチするラベルがあった場合は、コード 0 で終了し、なかった場合は、 コード 1 で終了する。その際、-v (--verbose) オプションが一緒に指定されないかぎり、出力には何も表示されない。

これと等価な短いオプションはない。

アーカイブ内の同名のコピーより新しいファイルだけを追加する。 引き数の意味は、-c-r オプションと同じである。 気を付けてほしいが、新しいファイルが、古いアーカイブコピーに置き換わるわけではない。 そうではなくて、アーカイブの末尾に追加されるのである。 従って、作成されたアーカイブには、 同じファイルの様々なバージョンに当たる、同じ名前の複数のメンバーが含まれることがある。
アーカイブからファイルを抽出する。引き数は任意である。 引き数が指定された場合、抽出するアーカイブメンバーの名前となる。
tar のいくつかのオプションについて組み込みのデフォルトを表示して、終了する。 引き数は指定できない。
-?, --help
簡単なオプションのサマリーを表示して、終了する。 引き数は指定できない。
指定可能なオプションのリストを表示して、終了する。 引き数は指定できない。
プログラムのバージョンと著作権情報を表示して、終了する。

オプション

操作の調節

インクリメンタルアーカイブを作成する際に、デバイス番号をチェックする (デフォルト)。
新 GNU 形式のインクリメンタルバックアップを取り扱う。 FILEスナップショットファイルの名前である (訳注: このオプションの引き数 FILE の指定は必須である)。tar はそこに補助情報を記録しておき、その情報を使って、前回のインクリメンタルダンプの後で、 どのファイルが変更され、従って、再度ダンプしなければならないかを判断する。 アーカイブの作成時に FILE が存在しない場合は、FILE が作られ、すべてのファイルが作成されるアーカイブに格納されることになる (これが level 0 のダンプである)。N が 0 ではない level N のインクリメンタルアーカイブを作成するには、level N-1 のアーカイブを作成したときに出来たスナップショットファイルのコピーを作って、それを FILE として使用すればよい。

アーカイブの内容表示やメンバーの抽出の際には、FILE の中身が実際に調べられるわけではない。tar の文法上 --listed-incremental は引き数を取ることになっているので、FILE の指定が必要なだけなのだ。それ故、FILE として /dev/null を使うのは、常套手段である。

[訳注]
level の利用法については、すこし説明が足りないと思う。 たとえば、最初にインクリメンタルアーカイブを作成したときに (すなわち level 0 のダンプをしたときに) 作ったスナップショットファイルが ./snap だったとしよう。これを snap0 としてバックアップしておく。そして、インクリメンタルバックアップを行うたびに、この snap0 をコピーしてスナップショットファイルとして使用する。そうすると、常に level 1 のインクリメンタルアーカイブが出来るわけだ。 こうしておけば、最初のアーカイブと最後のアーカイブを抽出 (この場合、「展開」の方がピッタリした表現だが) するだけで、最後のインクリメンタルアーカイブを作成したときの状態が復元できることになる。 もし復元したいのが、最後の 1 つ前の状態なら、最初と最後の 1 つ前のアーカイブを使用すればよい。 info tar の "Incremental Dumps" と "Backup Levels" を参照していただきたい。
スパースファイル (sparse file) の穴 (hole) の検出に METHOD を使う。このオプションは、--sparse を暗黙裡に設定する。METHOD に指定できる値は、seekraw である。デフォルトは seek であり、使用できない場合は raw を使う。
旧 GNU 形式のインクリメンタルバックアップを取り扱う。
読み込み不能なファイルがあっても、ゼロ以外の返り値で終了しない。
作成するリスト化インクリメンタルアーカイブ (訳注: すなわち、新 GNU 形式のインクリメンタルアーカイブ) のダンプレベルを設定する。 現在のところ、--level=0 のみが意味を持つ。 これを指定すると、tar はダンプする前にスナップショットファイルをサイズ 0 に短縮し、 強制的にレベル 0 のダンプにする。
アーカイブがシーク (seek) 可能であると見なす。通常、tar は、 アーカイブがシーク可能であるか否かを自動的に判断する。 このオプションは、そうした判断がうまく行かない場合に使うためのものである。 このオプションは、アーカイブを読み込むためにオープンしている場合にのみ効果がある (たとえば、 --list または --extract オプションが指定されている場合)。
インクリメンタルアーカイブを作成する際に、デバイス番号をチェックしない。
アーカイブがシーク可能でないと見なす。
アーカイブ中の各ファイルについて、N 番目に現れるものだけを処理の対象にする。 このオプションは、サブコマンド --delete, --diff, --extract, --list の 1 つとともに使用し、 しかも、ファイルのリストを、コマンドライン上、または -T オプションで指定している場合にのみ、有効である。オプション引き数 N の指定は任意だが、デフォルトでは 1 になっている。(訳注: -r や -u オプションを使った場合、アーカイブ中に同名のメンバーが複数存在することがある。 そうした場合に、何番目のメンバーを抽出などの対象にするかを指名するのである。)
有害かもしれないいくつかのオプションを無効化する。
スパースファイルで使用するスパースフォーマットのバージョンを指定する。 このオプションは --sparse を暗黙裡に設定する。 引き数に指定できる値は、 0.0, 0.1, 1.0 のいずれかである。 スパースフォーマットについての詳しい議論については、 GNU Tar Manual, appendix D, "Sparse Formats" をご覧いただきたい。info リーダーを使用する場合は、コマンド info tar 'Sparse Formats' で読むことができる。
スパースファイルを効率的に取り扱う。ファイルシステム上のファイルの中には、 実際の書き込みが一度も行われていないセグメントを含むものがある (そうしたものが DBM のようなシステムで作られたデータベースファイルだったりするのは、よくあることだ)。 このオプションを指定すると、tar は、ファイルをアーカイブに入れる前に、 それがスパースファイルかどうかを判断しようとする。 そして、もしそうなら、ファイル中の空っぽの部分をダンプしないことによって、 生成するアーカイブのサイズを小さくする。

上書きの制御

以下のオプションは、アーカイブからファイルを抽出することによって、 ディスク上にある同名ファイルの上書きが生じる場合の tar の挙動を制御する。

抽出時に、既存のファイルを置き換えない。
既存のファイルがアーカイブコピーより新しい場合、それを置き換えない。
抽出する際に、ディレクトリを指す同名のシンボリックリンクがすでに存在している場合は、 それをアーカイブ中の実ディレクトリで置き換えない。(訳注: その場合は、そのシンボリックの参照先にアーカイブ中のディレクトリの中身を展開する。 このオプションを指定しないデフォルトでは、まずシンボリックリンクを消去し、 それからディレクトリの抽出を行うことになる。)
既存のディレクトリのメタデータを変更しない。
すべてのファイルを DIR に抽出する。引き数なしで使用すると、 アーカイブのベースネームにちなんだ名前のサブディレクトリに抽出することになる (詳しく言うと、アーカイブのベースネームから --auto-compress で認識される標準的な圧縮ファイルの拡張子を取り去ったもの)。
抽出時に、既存ファイルを上書きする。
抽出時に、既存ディレクトリのメタデータを上書きする (デフォルト)。
ディレクトリを抽出する前に、同名のディレクトリにあるすべてのファイルを再帰的に削除する。
ファイルをアーカイブに追加した後で、ディスクからファイルを削除する。
抽出時に、既存のファイルを上書きせず、何のメッセージも出さずにスキップする (訳注: なお、--keep-old-files と違い、こちらは返り値がエラーにならない)。
抽出する際に、上書きするファイルをまず削除する。
アーカイブを書き込んだ後で照合する。

出力ストリームに関する選択

サブプロセスの終了コードを無視する。
子プロセスの 0 以外の終了コードをエラーとして扱う (デフォルト)。
ファイルを標準出力に抽出する。
抽出したファイルをパイプで COMMAND に渡す。 このオプションの引き数は、外部プログラムのパス名であり、 コマンドライン引き数を付けて指定することもできる。外部プログラムが起動されると、 抽出されたファイルの内容が、そのプログラムの標準入力に渡される。また、 追加的なデータが、以下の環境変数を通して外部プログラムに渡されることになる。
ファイルのタイプ。1 文字からなり、以下の意味がある。

	f	通常ファイル
	d	ディレクトリ
	l	シンボリックリンク
	h	ハードリンク
	b	ブロックデバイス
	c	キャラクタデバイス

現在のところサポートされているのは、通常ファイルだけである。

ファイルの許可属性。8 進数。
ファイル名。
アーカイブに格納されているファイル名。
ファイルの所有者名。
ファイルの所有グループ名。
最終アクセス日時。これは、the Epoch からの秒数を表す 10 進数である。 アーカイブの日時がナノ秒の精度の場合、タイムスタンプの小数点の後ろにナノ秒の部分が付く。
最終更新日時。
最終ステータス変更日時。
ファイルのサイズ。
ファイルの所有者の UID。
ファイルの所有グループの GID。

さらに、以下の環境変数に tar の操作モードや処理対象のアーカイブについての情報が含まれている。

GNU tar のバージョン番号。
tar が処理中のアーカイブの名前。
現在のブロッキング係数。すなわち、1 レコードを構成する 512 バイトのブロック数。
tar が処理中のボリューム番号 (複数ボリュームのアーカイブを読み込んでいる場合に設定される)。
処理しているアーカイブのフォーマット。gnu, oldgnu, posix, ustar, v7 の内の 1 つ。
tar が実行中の操作を表す短いオプション (前に 1 個のダッシュが付いたもの)。

ファイル属性の操作

ダンプの対象にした元ファイルのアクセス日時を変更しない。 その方法には、ファイルを読み込んだ後でアクセス日時を元に戻すやり方 (METHOD=replace、デフォルト) と、最初からアクセス日時を変更しないやり方 (METHOD=system) の二つがある。
抽出したディレクトリの更新日時や許可属性の決定を、抽出の最後まで遅らせる。 メンバーの順番が通常とは違っているアーカイブから抽出する際には、このオプションを使用するとよい。 (訳注: info tar の "Directory Modification Times and Permissions" を参照。)
アーカイブに入れるファイルの所有グループを NAME にする。 GID まで指定しない場合、NAME はグループ名でも、GID 番号でもよい。 その場合、指定しない方 (GID、またはグループ名) は、使用中のホストのグループデータベースから推測されることになる。

--group-map=FILE と一緒に使われたときは、 所有グループが FILE のリストに載っていないファイルに対してのみ効果がある。

グループ変換マップを FILE から読み込む。空行は無視する。 コメントは # で始まり、行末まで続く。FILE の空行以外の各行では、1 つのグループ変換を定義する。各行は、任意の数のホワイトスペース (訳注: 空白やタブ) で区切られた 2 つのフィールドから構成されていなければならない。 すなわち、次のような形である。

OLDGRP NEWGRP[:NEWGID]
    

OLDGRP は有効なグループ名か、+ を前に付けた GID である。 NEWGID を指定しない場合は、NEWGRP の方も、やはり有効なグループ名か、 +GID でなければならない。NEWGID まで指定した場合は、NEWGRPNEWGID のどちらも、システムのグループデータベースに載っている必要はない。

つまるところ、所有グループ OLDGRP の各入力ファイルが、所有グループを NEWGRP、GID を NEWGID としてアーカイブに格納されることになる。

アーカイブに入れるファイルの許可属性を、シンボルによる指定で CHANGES にする (訳注: 実際には 8 進数による指定も可能)。
アーカイブに入れるファイルの mtime を設定する。DATE-OR-FILE は、 ほぼ任意のフォーマットの日付/時刻、または既存ファイルの名前である。 後者の場合、そのファイルの mtime が使われる。
ファイルの更新日時 (mtime) を抽出しない。
前に指定した --delay-directory-restore オプションの効果を取り消す。
実行ユーザ自身の資格でファイルを抽出する (一般ユーザのデフォルト)。
[訳注]:
抽出したファイルは、自分の資格でディスクに書き込むわけだから、 一般ユーザのデフォルトでは、その所有者属性は当然自分のものになる。
アーカイブから許可属性を抽出する際、実行ユーザの umask を適用する (一般ユーザのデフォルト)。
ユーザ/グループ名に常に番号を使う。
アーカイブに入れるファイルの所有者を NAME にする。 UID まで指定しない場合、NAME はユーザ名でも、UID 番号でもよい。 その場合、指定しない方 (UID、またはユーザ名) は、使用中のホストのユーザデータベースから推測されることになる。

--owner-map=FILE と一緒に使われたときは、 所有者が FILE のリストに載っていないファイルに対してのみ効果がある。

所有者変換マップを FILE から読み込む。空行は無視する。 コメントは # で始まり、行末まで続く。FILE の空行以外の各行では、1 つの UID 変換を定義する。各行は、任意の数のホワイトスペース (訳注: 空白やタブ) で区切られた 2 つのフィールドから構成されていなければならない。 すなわち、次のような形である。

OLDUSR NEWUSR[:NEWUID]
    

OLDUSR は有効なユーザ名か、+ を前に付けた UID である。 NEWUID を指定しない場合は、NEWUSR の方も、やはり有効なユーザ名か、 +UID でなければならない。NEWUID まで指定した場合は、NEWUSRNEWUID のどちらも、システムのユーザデータベースに載っている必要はない。

つまるところ、所有者 OLDUSR の各入力ファイルが、所有者名を NEWUSR、UID を NEWUID としてアーカイブに格納されることになる。

ファイルの許可属性に関する情報を抽出する (スーパーユーザのデフォルト)。
アーカイブ中のものと同じ所有者属性を付けて、ファイルを抽出しようと試みる (スーパーユーザのデフォルト)。
引き数である抽出すべきファイルの名前が、アーカイブ中と同じ順番でソートされていると tar に知らせる。(訳注: info tar の "Same Order" と "Option Summary" に詳しい説明がある。それがわかりやすい。)
アーカイブを作成する際に、ディレクトリエントリを ORDER に基づいてソートする。 ORDERnone, name, inode のいずれかである。

デフォルトは --sort=none であり、 オペレーティングシステムが返すのと同じ順番でメンバーをアーカイブする。

--sort=name は、作成されるアーカイブのメンバーの並び順を一定で、再現可能なものにする。

--sort=inode を使うと、アーカイブを作成する際のディスクシークの回数を減らし、 そうすることで、実行時間をかなりスピードアップすることができる。 このソート順は、下層で動いているシステムが必要な情報を提供する場合にのみ使用できる。

拡張ファイル属性

POSIX ACL のサポートを有効にする。
POSIX ACL のサポートを無効にする。
SELinux コンテキストのサポートを有効にする。
SELinux コンテキストのサポートを無効にする。
拡張属性のサポートを有効にする。
拡張属性のサポートを無効にする。
xattr のキー (訳注: 拡張属性の名前) について、格納や抽出から除外するパターンを指定する。PATTERN は POSIX の正規表現である。たとえば、--xattrs-exclude='^user.' と指定すれば、名前空間 user の属性を除外することになる。
[訳注]
次の項目についても言えることだが、訳者の手元の tar-1.32 では --xattrs-exclude--xattrs-include の働きが、説明とは逆になっているようだ。 つまり、exclude で採用するパターンを指定し、include で除外するパターンを指定するようになっている。 ご自分のところではどうなるか、確かめていただきたい。
xattr のキーについて、格納や抽出時にインクルードするパターンを指定する。 PATTERN は POSIX の正規表現である。

デバイスの選択と交換

アーカイブファイルまたはアーカイブデバイスとして ARCHIVE を使用する。 このオプションを指定しない場合、tar は、まず環境変数 `TAPE' を調べ、 設定されていれば、その値をアーカイブ名として使用する。 設定されていない場合は、コンパイル時に埋め込まれたデフォルトを使う。 デフォルトの値は --show-defaults オプションを使って調べることができる。また、tar --help の出力の末尾を見てもわかる。

アーカイブ名にコロンが含まれている場合、それは、リモートマシンのファイルかデバイスである。 コロンの前の部分はマシン名または IP アドレスと見なされ、コロンの後の部分はファイルまたはデバイスのパス名と見なされる。 例を挙げよう。

--file=remotehost:/dev/sr0
    

そうしたければ、ホスト名の前にユーザ名を付けることもできる。その場合は、両者の間に @ 記号を置く。

デフォルトでは、リモートホストは rsh(1) コマンドを使ってアクセスされる。 最近では、代わりに ssh(1) を使うのが一般的である。 そうしたい場合は、以下のコマンドラインオプションを指定すればよい。

--rsh-command=/usr/bin/ssh
    

リモートマシンには rmt(8) コマンドがインストールされていなければならない。 そのパス名が tar のデフォルトと一致しない場合は、 --rmt-command オプションを使って正しいパス名を tar に知らせることができる。

アーカイブファイル名にコロンが含まれていてもローカルファイルとして扱う。
各テープの終わりに COMMAND を実行する (-M が暗黙裡に設定される)。 コマンドには引き数を含めることができる。コマンドは起動されるとき、tar の環境変数に加えて、以下の環境変数を継承する。
GNU tar のバージョン番号。
tar が処理中のアーカイブの名前。
現在のブロッキング係数。すなわち、1 レコードを構成する 512 バイトのブロック数。
tar が処理中のボリューム番号 (複数ボリュームのアーカイブを読み込んでいる場合に設定される)。
処理しているアーカイブのフォーマット。gnu, oldgnu, posix, ustar, v7 の内の 1 つ。
tar が実行中の操作を表す短いオプション (前に 1 個のダッシュが付いたもの)。
新しいボリューム名を tar に伝えるために使うことができるファイルディスクリプタ。

指定された info script が失敗した場合、tar は終了する。成功した場合は、次のボリュームの書き込みを始める。

Nx1024 バイトを書き込んだ後、テープを入れ替える。 N にはサイズを表す接尾辞 (下記の「サイズ接尾辞」を参照) を付けることができる。そうした接尾辞は 1024 の代わりに使う乗数を指定している。

このオプションは -M を暗黙裡に設定する。

マルチボリュームアーカイブの作成/内容表示/抽出を行う。
リモートアーカイブにアクセスする際に、rmt の代わりに COMMAND を使う。 上記の -f オプションの説明を参照すること。
リモートアーカイブにアクセスする際に、rsh の代わりに COMMAND を使う。 上記の -f オプションの説明を参照すること。
このオプションを --multi-volume とともに使うと、 tar は、 今マルチボリュームアーカイブのどのボリュームを処理しているかを、FILE に記録することになる。

レコードとブロック (Device blocking)

レコードサイズを BLOCKSx512 バイトにする (訳注: BLOCKS は 1 レコードを構成する 512 バイトのブロックの数、すなわち、ブロッキング係数。たいていの場合、デフォルトは 20 になっている)。
内容表示や抽出をする際、ファイルの末尾を示すマーカーを含むレコードが、1 レコードの大きさに満たない不完全な入力レコードであっても許容する。 (訳注: tar はアーカイブの読み書きをレコード単位で行う。このオプションは、1 レコードの大きさに達しない入力に対する処理を指定している。info tar Reading を参照していただきたい)。
アーカイブ中の 0 ばかりからなるブロックを無視する。通常、0 で埋められた 512 バイトブロックが 2 個連続すると、それはファイルの末尾 (EOF) を意味し、これに出会うと tar は読み込みを止める。 このオプションを指定すると、0 のブロックに出会っても読み込みを続けるので、 -A オプションを付けて作成したアーカイブを読み込むとき役に立つ。
レコードサイズを設定する。NUMBER は 1 レコードあたりのバイト数であり、512 の倍数でなければならない。 サイズ接尾辞を付けることもでき、たとえば、--record-size=10K は 10 キロバイトである。有効な接尾辞のリストについては、 サブセクション「サイズ接尾辞」をご覧いただきたい。

アーカイブ形式の選択

指定した形式のアーカイブを作成する。 有効なフォーマットは以下のとおりである。
GNU tar 1.13.x 形式
GNU tar 1.12 以前の GNU 形式
POSIX 1003.1-2001 (pax) 形式
POSIX 1003.1-1988 (ustar) 形式
古い V7 tar 形式
--format=v7 と同じ。
(-H pax で) PAX アーカイブを作成する際の pax のキーワードを調整する。このオプションは pax(1) ユーティリティの -o オプションと等価である。
--format=posix と同じ。
TEXT というボリューム名 (訳注: ボリュームラベルとも言う) を付けて、アーカイブを作成する。 内容表示や抽出をする際にこのオプションを指定した場合は、TEXT をボリューム名の glob パターンとして使用する。
[訳注]
内容表示や抽出をする際に -f オプションの代わりに使えるわけではない。 そういうボリューム名を持つアーカイブに対してのみ、内容表示や抽出を行うということであって、 -f ARCHIVE はやはり必要である。

圧縮オプション

圧縮プログラムを決定するためにアーカイブ拡張子を使用する。
データを COMMAND でフィルタする。コマンドは、伸長するための -d オプションを解するものでなければならない。 引き数にはコマンドラインオプションも含めることができる。
[訳注]
圧縮・伸長プログラムが -d オプションを解しさえすればよいのであって、抽出・内容表示時に COMMAND 中で -d を指定する必要があるということではない。
アーカイブを bzip2(1) でフィルタする。
アーカイブを xz(1) でフィルタする。
アーカイブを lzip(1) でフィルタする。
アーカイブを lzma(1) でフィルタする。
アーカイブを lzop(1) でフィルタする。
圧縮プログラムを決定するためにアーカイブ拡張子を使用しない。
アーカイブを gzip(1) でフィルタする。
アーカイブを compress(1) でフィルタする。
アーカイブを zstd(1) でフィルタする。

ローカルファイルの選択

FILE をアーカイブに追加する (ファイル名がダッシュで始まる場合に便利である)。
上書きや削除をする前にバックアップを行う。引き数 CONTROL を指定すれば、それがバックアップのやり方を決める。有効な値は以下のとおりである。 (訳注: このオプションは、アーカイブの作成 (-c)、抽出 (-x)、どちらでも使えるが、-A, -r, -u, --delete では無効のようだ。)
バックアップを全く作成しない。
番号付きのバックアップを作成する。
番号付きのバックアップが存在すれば、番号付きのバックアップを、 存在しなければ、単純形式のバックアップを作成する。
常に単純形式のバックアップを行う。

CONTROL が指定されない場合、環境変数 VERSION_CONTROL から値を取得する。それも指定されていない場合は、existing が指定されているものと見なされる。
何らかの操作を行う前に、ディレクトリ DIR に移動する。 このオプションは順番を意識する。すなわち、その後に続くすべてのオプションに影響を及ぼす。
glob(3) スタイルのワイルドカードパターン PATTERN にマッチするファイルを除外する (訳注: つまり、PATTERN の指定にシェル式のワイルドーカードが使えるということ)。
バックアップファイルとロックファイルを除外する。
CACHEDIR.TAG という名前のファイルを含むディレクトリの中身を除外する。 ただし、タグファイル自体は除外しない。(訳注: CACHEDIR.TAG とそれが含むべき内容については、 <http://www.brynosaurus.com/cachedir/spec.html>、または <http://bford.info/cachedir/spec.html> をご覧いただきたい。)
CACHEDIR.TAG という名前のファイルを含むディレクトリとタグファイル自体を除外する。
CACHEDIR.TAG という名前のファイルを含むディレクトリ以下のすべてを除外する (訳注: ただし、そのディレクトリ自体は除外しない)。
ディレクトリをダンプする前に、FILE というファイルがそこに含まれているかを調べる。 含まれている場合は、そのファイルから除外パターンを読み込む。 このパターンは、そのディレクトリにのみ影響する。
[訳注]
訳者の手元の tar-1.32 では、このオプションの動作は、次の項目の --exclude-ignore-recursive と同じであるようだ。 すなわち、そのディレクトリ以下のサブディレクトリにも影響する。 ご自分のところではどうなるか、確かめていただきたい。
--exclude-ignore と同様であるが、FILE から読み込んだパターンは、そのディレクトリとすべてのサブディレクトリに影響を及ぼす。
FILE というファイルを含むディレクトリの中身を除外する。ただし、 FILE 自体は除外しない。
FILE というファイルを含むディレクトリを除外する。
FILE というファイルを含むディレクトリ以下のすべてを除外する (訳注: ただし、そのディレクトリ自体は除外しない)。
バージョン管理システムのディレクトリを除外する。
VCS 独自の除外ファイルからパターンを読み込み、それにマッチするファイルを除外する。 サポートされているファイルは、 .cvsignore, .gitignore, .bzrignore, .hgignore である。
シンボリックリンクを辿り、それが指しているファイルをアーカイブに入れる (訳注: シンボリックリンクが指している実ファイルが、 同一アーカイブに収録されるときは、そのハードリンクを、収録されないときは実ファイルを、 シンボリックリンクのファイル名でアーカイブに入れるようだ)。
ハードリンクを辿り、それが指しているファイルをアーカイブに入れる (訳注: ハードリンクとしてではなく、独立したファイルとしてアーカイブに入れる)。
アーカイブ内の指定されたメンバーから (抽出や内容表示を) 開始する。
DATE 以降にデータが変更されたファイルを処理の対象にする。 DATE/ または . で始まる場合は、 ファイル名と見なされ、そのファイルの mtime が日付として使われる。
これより前に指定された --null オプションの効果を無効にする。
ディレクトリにおいて自動的な下降をしないようにする。
[訳注]:
わかりにくいと思うので、もう少し説明する。--create でこのオプションを使用すると、アーカイブする対象としてディレクトリを指定した場合、 そのディレクトリ自体はアーカイブに入れられるが、 そのディレクトリにあるファイルやサブディレクトリは、自動的にはアーカイブに格納されなくなる。 ファイルも一緒に格納したいのなら、それもアーカイブする対象として指定しなければならないのだ。 従って、このオプションは、たとえば find コマンドと --files-from='-´ オプションを使って、アーカイブする対象のリストを厳密に指定するときなどに、役に立つ。 --extract と組み合わせ、抽出対象にディレクトリを指定した場合は、 そのディレクトリだけが抽出され、ディレクトリの中身は抽出されない。 なお、このオプションはコマンドラインにおける順番を意識する。 詳しいことは info tar recurse を参照していただきたい。
指定された入力ファイル名やメンバー名中の、バックスラッシュでクォートされたシーケンスを解釈・変換しない (訳注: すなわち、\t, \n, \b などをタブ、改行などとしてではなく、文字通り \t, \n, \b として扱う。なお、このオプションはコマンドライン上の位置が意味を持つ)。
ファイルリストから読み込んだ各行を、あたかもコマンドラインから打ち込まれたかのように処理する。 すなわち、前後の空白を除去した後の文字列がダッシュで始まる場合は、tar のコマンドラインオプションと見なす。

これはデフォルトの動作である。この --no-verbatim-files-from オプションがあるのは、--verbatim-files-from オプションを指定した後で動作を元に戻すためである。

このオプションは指定する位置が意味を持つ。 すなわち、コマンドラインでこのオプションより後に指定されるすべての --files-from オプションに影響し、--verbatim-files-from オプションが現れるか、コマンドラインの末尾に達するまで効果が続く。

--no-null オプションを指定すると、このオプションが暗黙裡に設定される。

後に続く -T オプションに対して、null で終端された名前を文字通りに読み込むように指示する (つまり、-T オプションでダッシュで始まる名前の特別扱いをしなくなる)。

--verbatim-files-from も参照すること。

[訳注]
--null オプションの第一の働きは、それ以後に現れる -T オプションに対して、ファイルリストの各項目が、改行ではなく、 ASCII NUL で区切られていると知らせることである。 上の説明で述べているようなことは、二次的な働きというか、むしろ、 このオプションによって自動的に設定される --verbatim-files-from の働きだと言える。
DATE より新しいファイルのみを格納する。 DATE/ または . で始まっている場合は、 ファイル名と見なされ、そのファイルの ctime が日付として使われる。
アーカイブを作成する際に、ローカルファイルシステムに限定する。
アーカイブを作成する際に、ファイル名の先頭のスラッシュを除去しない。
ディレクトリを再帰的に辿る (デフォルト)。
削除する前にバックアップを作り、拡張子を通常のものから変更する。 環境変数 SIMPLE_BACKUP_SUFFIX によって変更されていないかぎり、 デフォルトの拡張子は ~ である。
アーカイブから抽出する名前やアーカイブに格納する名前を FILE から読み込む。

別の指定がないかぎり、FILE の内容は、ASCII LF で区切られた名前のリストでなければならない (つまり、1 行に 1 個の名前だ)。 読み込まれた名前は、コマンドラインの引き数と同じやり方で処理される。 すなわち、引用符が除去され、単語に分割され、そして、ダッシュ (-) で始まる文字列があれば、tar のコマンドラインオプションとして処理される。

[訳注]:
上のパラグラフの後半で説明しているのは、オプションを指定した行が FILE 中にあるかどうかを知るために tar が取る手続きであって、ファイル名を指定した行の扱いには関係がないようだ。 そうした行は、あるがままに、すなわち、引用符に囲まれていれば、 引用符が付いたものとして、先頭に空白があれば、空白に始まるファイル名として、扱われる。また、手元の tar 1.32 では、オプションの行でも、引用符の除去はやっていないようである。

この動作が望ましくない場合は、 --verbatim-files-from オプションでやめさせることができる。

--null オプションを指定すると、tarFILE 中の名前の区切りを LF ではなく、ASCII NUL 文字にする。 これはリストが find(1)-print0 アクションで生成されている場合に役に立つ。

指定された入力ファイル名やメンバー名中の、バックスラッシュでクォートされたシーケンスを解釈・変換する (デフォルト)。(訳注: すなわち、\t, \n, \b などをタブ、改行などとして扱うということ。 なお、このオプションはコマンドライン上の位置が意味を持つ。)
ファイルリストから読み込んだ各行がダッシュで始まっていても、フィル名として扱う。 ファイルリストの取得には、--files-from (-T) オプションを使用する。tar のデフォルトの動作は、ファイルリストから読み込んだ名前を、 あたかもコマンドラインから打ち込まれたかのように処理することである。 すなわち、ダッシュで始まっている名前があれば、 tar のオプションと見なす。この --verbatim-files-from オプションは、そうした動作をしないようにするのである。

このオプションは、コマンドラインでこれより後に指定されるすべての --files-from オプションに影響を与える。 このオプションの効果は、 --no-verbatim-files-from  オプションによって元に戻すことができる。

--null オプションを指定すると、このオプションが暗黙裡に設定される。

--add-file も参照すること。

FILE にリストされたパターンにマッチするファイルを除外する。

ファイル名の変更

抽出時にファイル名の先頭から NUMBER 個の構成要素 (訳注: 要するに、NUMBER 個のディレクトリ部分) を取り去る。
sed の置換表現 EXPRESSION をファイル名の変更に使う。

ファイル名のマッチングに関するオプション

これらのオプションは除外 (exclude) パターンと包摂 (include) パターンの両方に影響する。

パターンはファイル名の先頭にマッチする。
大文字小文字を区別しない。
パターンはどの / の後にでもマッチする (除外時のデフォルト)。
大文字小文字を区別してマッチングを行う (デフォルト)。
パターンの文字列を文字通りに解してマッチングを行う (訳注: これはワイルドカード文字をただの文字として扱うということ。\t, \n などを文字通りに読む方は、--no-unquote を使う)。
ワイルドカードは / にマッチしない。
ワイルドカードを使う (除外時のデフォルト)。
ワイルドカードは / にマッチする (除外時のデフォルト)。

情報出力

N レコード (デフォルトは 10) ごとに進捗メッセージを表示する。
チェックポイントごとに ACTION を実行する。
--mtime で指定された日時より新しいファイルに対してのみ、日時を設定する。
高精度でファイルの日時を表示する (訳注: tar 1.32 では秒まで。-v オプションが必要)。
詳細出力を FILE に書き出す。
ハードリンクのすべてをダンプしていない場合に、その旨メッセージを出す。
STRING に列挙された文字を、表示するときにクォートする文字のリストから外す (訳注: リストから外せるのは、--quote-chars によって追加された文字だけであり、 デフォルトでクォートすることになっている文字を外せるわけではない。次の項目ともども info tar を参照)。
STRING に列挙された文字を、表示するときにクォートする文字のリストに追加する。
ファイル名やメンバー名を表示するときのクォート形式を設定する。 STYLE に指定できる値は以下のとおりである。 literal, shell, shell-always, c, c-maybe, escape, locale, clocale.
各メッセージにアーカイブ中のブロック番号を付ける。
内容表示や抽出をする際、検索の基準にマッチしないディレクトリに出会うごとに、その旨表示する (訳注: 要するに、何らかの理由で、内容表示や抽出をスキップするディレクトリがあれば、 それを知らせるということ。info tar verbose を実行すると、そのセクション中にこのオプションのかなり詳しい説明がある)。
ファイル名やアーカイブ名を表示する際、--strip--transform オプションで変更した後の名前を使う (訳注: デフォルトでは変更前の名前が使われる)。
アーカイブを処理した後で総バイト数を表示する。 SIGNAL を指定すると、そのシグナルが送られたときの総バイト数を表示する。 指定できるシグナルは、 SIGHUP, SIGQUIT, SIGINT, SIGUSR1, SIGUSR2 である。接頭辞の SIG は省略できる。
ファイル更新日時を UTC で表示する。
処理したファイルの詳しいリストを出力する。 このオプションをコマンドラインで指定した数だけ、詳細レベルが 1 つずつ上がる。最大の詳細レベルは 3 である。それぞれの詳細レベルで tar の出力がどのようになるかについては、GNU Tar Manual のサブセクション 2.5.2 "The '--verbose' Option" に詳しい説明があるので、参照していただきたい (訳注: info tar 'verbose tutorial' で見ることができる)。
KEYWORD で特定される警告メッセージを有効、または無効にする。 KEYWORD の前に no- を付ければ、そのメッセージは抑制され、 付けなければ、有効になる。

--warning のメッセージを複数指定すると、前の指定に後のものが積み重なって行く。

以下のキーワードは tar の操作全般を制御するものである:

すべての警告メッセージを有効する。これがデフォルト。
すべての警告メッセージを無効にする。
"%s: 読み込んだファイル名にヌル文字が含まれています"
"%s に孤立したゼロブロックがあります"

以下のキーワードは tar --create に対して適用される:

"%s: キャッシュディレクトリの目印 %s があります; %s"
"%s: ファイルが %s バイト小さくなったので、ゼロで埋めます"
"%s: ファイルが異なるファイルシステム上にあるので、ダンプしません"
"%s: 未知のファイルタイプです。このファイルは無視します"
"%s: ソケットは無視します"
"%s: door は無視します"
"%s: ファイルが変更されていないので、ダンプしません"
"%s: ファイルがこのアーカイブそのものなので、ダンプしません"
"%s: ファイルが読み込む前に削除されました"
"%s: ファイルが読み込み中に変更されました"
読み込み不能なファイルやディレクトリについての警告メッセージを抑止する。 このキーワードは --ignore-failed-read オプションと一緒に使用した場合にのみ適用される。

以下のキーワードは tar --extract に対して適用される:

"%s: 既存ファイルをスキップします"
"%s: あまりにも古いタイムスタンプ %s"
"%s: タイムスタンプ %s は %s 秒後の日時を示しています"
"連続したファイル (contiguous files) を普通のファイルとして取り出します"
"シンボリックリンクをハードリンクとして取り出してみます"
"%s: 未知のファイルタイプ '%c'。通常のファイルとして抽出します"
"現在の %s の方が新しいか同じです"
"未知の拡張ヘッダキーワード '%s' を無視します"
ある伸長プログラムの実行に失敗して、 別のプログラムで代用しようとしたときに出る詳しい説明をコントロールする。 この警告は、デフォルトでは無効になっている (--verbose 使用時を除く)。 この警告を有効にしたときに表示されるよくある例は、次のようなものである。

$ tar --warning=decompress-program -x -f archive.Z
tar (child): cannot run compress: No such file or directory

tar (child): trying gzip

このメッセージは、tar が最初に compress を使って archive.Z を伸長しようとして、それに失敗し、gzip に切り替えたことを示している。

"レコードサイズ = %lu ブロック"

インクリメンタルな抽出を制御するキーワード:

"%s: ディレクトリ名が %s から変更されました"
"%s: ディレクトリ名が変更されました"
"%s: ディレクトリが新しく作られました"
"%s: ディレクトリが異なるデバイス上にあるので消去しません"
"不正形式の dumpdir: 'X' が未使用"
すべての動作に対して確認を求める。

互換オプション

作成時は --old-archive と同じであり、抽出時は --no-same-owner と同じである。

サイズ接尾辞

	接尾辞	単位	バイトサイズ
	b	ブロック	SIZE x 512
	B	キロバイト	SIZE x 1024
	c	バイト	SIZE
	G	ギガバイト	SIZE x 1024^3
	K	キロバイト	SIZE x 1024
	k	キロバイト	SIZE x 1024
	M	メガバイト	SIZE x 1024^2
	P	ペタバイト	SIZE x 1024^5
	T	テラバイト	SIZE x 1024^4
	w	ワード	SIZE x 2

返り値

tar の終了コードは、要求された操作の遂行に成功したかどうか、 成功しなかった場合は、どのようなエラーが起きたかを示している。

0
成功して終了した。
1
いくつかのファイルに相違がある。 tar が --compare (--diff, -d) コマンドラインオプションとともに起動された場合は、 アーカイブ内のファイルにディスク上の同名ファイルと異なっているものがあるということである。 --create, --append, --update オプションのいずれかが指定された場合は、アーカイブ処理の最中に変更されたファイルがあり、 従って、生成されたアーカイブはファイルセットの正確なコピーを保持していないことを示している。
2
致命的なエラー。 これは、何らかの致命的で回復不能なエラーが起きたことを表している。

tar によって起動されたサブプロセスが、0 以外の終了コードで終了した場合は、tar 自身もその終了コードで終了する。たとえば、圧縮オプション (-z など) を使用したとき、外部の圧縮プログラムが実行に失敗すると、そうしたことが起こり得る。 他の例としては、rmt がリモートデバイスへのバックアップ中に失敗した場合などがある。

関連項目

bzip2(1), compress(1), gzip(1), lzma(1), lzop(1), rmt(8), symlink(7), xz(1), zstd(1).

詳細な tar マニュアルは、 info tar を実行するか、 emacs(1) の info モードを使用すれば、読むことができる。

また、以下のサイトに行けば、様々な形式にした GNU tar マニュアルのオンライン版を見つけることができる。


http://www.gnu.org/software/tar/manual

バグ報告

バグは <bug-tar@gnu.org> に報告していただきたい。

著作権

Copyright © 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

訳者謝辞

tar の出す警告文は、Masahito Yamaga さんによる tar-1.32 のメッセージカタログの翻訳を利用させていただきました。お礼を申し上げます。 ただし、このマニュアル内で読みやすいように、すこし手を加えたところもあります。 ご了承ください。

なお、翻訳に当たっては、できるだけ実際に動かして確認していますが、 テープドライブは使ったことがありません。そのため、そのへんの翻訳については、 間違いがあるかもしれません。お気づきの点がありましたら、ご教示いただけるとありがたく思います。

February 4, 2019 TAR