スポンサーリンク

BSDTAR(1) FreeBSD 一般コマンドマニュアル BSDTAR(1)

名称

tar − テープアーカイブを操作する

書式

tar [bundled-flags

                           args⟩] [⟨                                      file⟩ | ⟨                                                 pattern⟩ ...]

tar {−c} [options] [files | directories]
tar
{−r | −u} −f archive-file [options] [files | directories]
tar
{−t | −x} [options] [patterns]

解説

tar はアーカイブファイルストリームの作成と操作をします。

最初の書式フォームでは ‘‘まとめ’’ (bundled) オプション形式を表していま す。この使用法は、これまでの実装との互換性のために提供されています。詳細 は後述の「互換性」を参照してください。

その他の書式フォームが、好ましい使用法を表しています。 tar への最初のオプ ションは、次の一覧にあるモードの指示です:

       −c

指定されたアイテムを含んだ、新しいアーカイブを作成します。
−r
−c
と似ていますが、新しいエントリはアーカイブに追加されます。なお これは通常ファイルの非圧縮アーカイブに対してのみ動作します。 −f オプションが必要です。
−t

標準出力にアーカイブ内容のリストを出力します。
−u
−r
と似ていますが、新しいエントリの変更時刻が、アーカイブ内の対応 するエントリのものよりも新しい場合のみ、追加されます。なおこれは 通常ファイルの非圧縮アーカイブに対してのみ動作します。 −f オプ ションが必要です。
−x

アーカイブからディスクに展開します。もし同名のファイルがアーカイ ブ内に 2 回以上現れた場合、それぞれのコピーが展開され、後のものが それ以前のコピーを上書き (置換) します。

−c, −r, −u モードにおいて、指定されたファイルまたはディレクトリは、コマン ドラインで指定された順にアーカイブに追加されます。デフォルトでは、各ディ レクトリ内のファイルもアーカイブされます。

展開またはリストモードにおいて、アーカイブをオープンする前にコマンドライ ン全体が読み込まれ、解析されます。コマンドラインのパス名またはパターン は、アーカイブ内の処理対象となるアイテムを示します。パターンはシェル形式 のグロブパターンであり、XXXX に文書化されています。

オプション

明記していないオプションは、全ての操作モードに適用可能です。

       @archive

(c および r モードのみ) 指定されたアーカイブがオープンされ、その エントリが現在のアーカイブに追加されます。簡単な例として、 tar −c −f - newfile @original.tar ではファイル newfile と、 original.tar の全てのエントリを含む、新 しいアーカイブを標準出力に書き出します。対照的に、 tar −c −f - newfile original.tar では、二つのエントリのみの新しいアーカイブを作成します。また、 tar −czf - −-format pax @- では標準入力からアーカイブを読み込み (フォーマットは自動的に判 別)、 gzip で圧縮した pax フォーマットアーカイブに変換して、標準 出力に出力します。このように、 tar はアーカイブのフォーマットを別 のものに変換する為に使うことが出来ます。

−b blocksize
テープドライブの I/O に対するブロックサイズを、512 バイトレコード 単位で指定します。一般に、本引数はテープドライブに読み書きする 時、デフォルトブロックサイズでありごく一般的な 20 レコード (10240 バイト) を用いない場合のみに必要となります。

−C directory
c および r モードにおいて、続くファイルを追加する前に、ディレクト リを変更します。 x モードにおいては、アーカイブをオープンした後、 エントリをアーカイブから展開する前にディレクトリを変更します。

−-check-links (−W check-links)
(c および r モードのみ) 各ファイルへのすべてのリンクがアーカイブ されないなら、警告メッセージを発行します。

−-exclude pattern (−W exclude=pattern)
指定したパターンにマッチするファイルやディレクトリを、処理しませ ん。なおこれはコマンドラインで指定したパターンやファイル名よりも 優先します。

−-format format (−W format=format)
(c モードのみ) 作成するアーカイブのフォーマットを指定するのに用い ます。サポートされるフォーマットには、 ‘‘cpio’’, ‘‘pax’’, ‘‘shar’’, ‘‘ustar’’ があります。また他のフォーマットもサポートさ れているかもしれません。現在サポートされているフォーマットの詳細 な情報については、 libarchive-formats(5) を参照してください。

−f file
指定されたファイルを、読み書きするアーカイブにします。ファイル名 を - にすれば、標準入力または標準出力になります。指定しない場合、 デフォルトのテープデバイスが使用されます (FreeBSD の場合、デフォ ルトのテープデバイスは /dev/sa0) 。

−-fast-read (−W fast-read)
(x および t モードのみ) 各パターンまたはファイル名オペランドに マッチするエントリのうち、最初のアーカイブエントリだけを展開また はリスト表示します。各パターンまたはファイル名にマッチすれば、す ぐに終了します。同名のエントリが複数存在でき、また慣習として後の エントリがそれ以前のエントリを上書きする為に、デフォルトではアー カイブは常に最後まで読み込まれます。本オプションは性能の最適化の 為に提供されています。

−H
(c および r モードのみ) コマンドラインで指定されたシンボリックリ ンクを追跡します。リンク自身ではなく、リンクの対象をアーカイブし ます。

−h
(c および r モードのみ) −L と同じ意味です。

−-include pattern (−W include=pattern)
指定したパターンにマッチしたファイルまたはディレクトリのみ処理し ます。なおこの指定よりも、 −-exclude による指定が優先します。これ を明示しなければ、デフォルトで全てのエントリが処理されます。この −-include オプションは、アーカイブをフィルタリングするのに特に有 用です。例として、次のコマンド tar −c −f new.tar −-include=’*foo*’ @old.tgz では、 old.tgz のエントリのうち、文字列 ‘foo’ を含んでいるものだ けを含む、新しいアーカイブ new.tar を作成します。

−j
(c モードのみ) 作成するアーカイブを bzip2(1) で圧縮します。展開ま たはリストモードでは、本オプションは無視されます。なお他の tar 実 装と異なり、本実装ではアーカイブを読み込む際には、bzip2 圧縮を自 動的に判別します。

−k
(x モードのみ) 既存のファイルを上書きしません。特に、アーカイブ内 に 2 回以上現れるファイルであっても、後のコピーがそれ以前のコピー を上書きすることはしません。

−L
(c および r モードのみ) 全てのシンボリックリンクを追跡します。通 常、シンボリックリンクはそのままアーカイブされます。本オプション により、リンクの対象が代わりにアーカイブされます。

−l
POSIXLY_CORRECT が環境で指定されるなら、これは −-check-links オプ ションのための同義語です。さもなければ、エラーが表示されます。 GNU tar と互換性のある振舞いを希望するユーザは代わりに −-one-file-system オプションを使用するべきです。

−m
(x モードのみ) ファイル更新時刻を展開しません。デフォルトでは、更 新時刻はアーカイブに納められている時刻に設定されます。

−n
(c, r, u モードのみ) ディレクトリ内のファイルを再帰的にアーカイブ しません。

−-nodump (−W nodump)
(c および r モードのみ) nodump ファイルフラグの立ったファイルをス キップします。

−O
(x, t モードのみ) 展開 (-x) モードでは、ファイルはディスクに展開 されずに標準出力に書き込まれます。リスト (-t) モードでは、ファイ ルリストは通常の標準出力でなく標準エラーに書き込まれます。

−o
(x モードのみ) ユーザとグループを、アーカイブが指定したものではな く、本プログラムを実行しているユーザのものを使用します。なおこれ は −p を指定しないと意味がありません。また本プログラムを root ユーザが実行している必要があります。この場合、ファイルモードとフ ラグはアーカイブからリストアされますが、 ACL や所有者の情報は破棄 されます。

−P
パス名を保持します。デフォルトでは、アーカイブの作成と展開の両方 において、絶対パス名 (/ 文字で始まっているもの) の最初のスラッ シュは取り除かれます。また tar は、パス名に .. を含んでいたり、対 象ディレクトリをシンボリックリンクで変更するアーカイブエントリを 展開するのを拒否します。本オプションはこの振舞いを抑制します。

−p
(x モードのみ) ファイルパーミッションを保持します。アーカイブから 各アイテムを展開する際、可能ならば、所有者、ファイルモード、ファ イルのフラグと ACL を含む、全てのパーミッションをリストアしようと します。デフォルトでは、新規作成するファイルの所有者は tar を実行 するユーザとなり、新規作成する通常ファイルに関してはファイルモー ドがリストアされ、またこれら以外のタイプのエントリはデフォルトの パーミッションになります。もし tar を root が実行した場合、 −o オ プションを指定しない限り、デフォルトで所有者がリストアされます。

−T filename
(c モードのみ) アーカイブすべきファイル名を filename から読み込み ます。ファイル名は改行で区切られます。特別な名前である ‘‘-C’’ に より、カレントディレクトリをその次の行で指定されたディレクトリに 変更します。

−U
(x モードのみ) ファイルを作成する前に、いったん削除します。本オプ ション無しでは、 tar は既存のファイルを上書きし、既存のハードリン クを保持します。本オプションにより、既存のハードリンクは破棄さ れ、同様に、展開されるファイルの場所に影響を及ぼすシンボリックリ ンクも破棄されます。

−v
冗長な出力を表示します。作成及び展開モードにおいて、 tar はアーカ イブに書き込み、またはアーカイブから読み出した各ファイルの名前を リスト表示します。リストモードにおいて、 tarls(1) に似た出力 を表示します。 −v オプションを追加することで、付加的な説明を表示 します。

−W longopt=value
ロングオプション (−− が先行する) は、 getopt_long(3) 関数が用意さ れているシステムでのみ、直接サポートされます。この関数をサポート しないシステムでは、本 −W オプションを介して、ロングオプションを 使うことが出来ます。

−w
あらゆる操作に対し、確認を求めます。

−X filename
指定されたファイルから除外パターンのリストを読み込みます。除外の 取り扱いに関する情報については −-exclude を参照してください。

−y
(c モードのみ) 作成するアーカイブを bzip2(1) で圧縮します。展開ま たはリストモードでは、本オプションは無視されます。なお他の tar 実 装と異なり、本実装ではアーカイブを読み込む際には、bzip2 圧縮を自 動的に判別します。

−z
(c モードのみ) 作成するアーカイブを gzip(1) で圧縮します。展開ま たはリストモードでは、本オプションは無視されます。なお他の tar 実 装と異なり、本実装ではアーカイブを読み込む際には、gzip 圧縮を自動 的に判別します。

環境変数

次の環境変数が、 tar の実行に関係します:

       LANG

使用するロケール。詳細は environ(7) を参照。

POSIXLY_CORRECT
この環境変数が定義されると、 −l オプションは ISO/IEC 9945-1:1996 (‘‘POSIX.1’’) に従って解釈されます。

TAPE
デフォルトテープデバイス。 −f オプションはこれを無視します。

TZ
日付を表示する際に使用するタイムゾーン。詳細は environ(7) を参 照。

関連ファイル

       /dev/sa0

TAPE 環境変数か −f オプションで無視されないなら、デフォルトの テープデバイスです。

終了ステータス

ユーティリティ tar は、成功すると 0 で、エラーがあった場合は >0 で終了し ます。

使用例

二つのファイル source.csource.h を含む新しいアーカイブ file.tar を作 成します:

tar −czf file.tar source.c source.h

アーカイブの詳細な内容一覧を表示します:

tar −tvf file.tar

デフォルトのテープドライブにあるアーカイブの、全てのエントリを展開します:

tar −x

作成モードにおいて、アーカイブされるファイルとディレクトリのリストには、 -Cfoo/baz の形式でディレクトリの変更命令を取り込むことが出来ます。また @archive-file の形式でアーカイブのエントリを取り込むことも出来ます。例え ば、次のコマンドライン

tar −c −f new.tar foo1 @old.tgz -C/tmp foo2

では、新しいアーカイブ new.tar を作成します。 tar はカレントディレクトリ からファイル foo1 を読み込み、出力するアーカイブに追加します。次に old.tgz の各エントリを読み込み、これらのエントリを、出力するアーカイブに 追加します。最後にディレクトリを /tmp に変更し、 foo2 を出力するアーカイ ブに追加します。

互換性

まとめオプション形式は、これまでの実装との互換性のためにサポートされてい ます。これには、各文字がオプションである頭文字 (- 文字で始まらない) が存 在します。引数は別々の単語で続きます。この引数の順序はまとめオプション文 字内の、対応する頭文字の順序と一致している必要があります。例えば

tar tbf 32 file.tar

では、三つのフラグ t, b, および f を指定しています。 bf フラグは、共 に引数が必要ですので、二つの追加アイテムがコマンドラインに必要です。 32b フラグに対する引数であり、また file.tarf フラグに対する引数で す。

モードオプションの c, r, t, u, x、およびオプションの b, f, l, m, o, v, w は、SUSv2 に準じています。

移植性を最大限にするために、 tar を実行するスクリプトは、上記のまとめオプ ション形式を使うべきであり、モードオプションは c, t, x に、またオプション は b, f, m, v, w に制限するべきです。

getopt_long() をサポートするシステムでは、他の tar 実装との互換性を増すた めに、ロングオプションが使用できます。

セキュリティ

確実なセキュリティは、 tar を含む沢山のアーカイブプログラムに共通の課題で す。特に、細工されたアーカイブは tar に対して、対象とするディレクトリ以外 の場所にファイルを展開するように要求することが出来ます。これは不注意な ユーザに対し、上書きするつもりの無いファイルを上書きさせるのに使うことが 潜在的に可能です。アーカイブをスーパユーザが展開している場合は、システム 上のあらゆるファイルが上書きされる潜在的な可能性があります。これを引き起 こす、三つの手段があります。 tar はそれらに対する防御機構を備えています が、情報通のユーザならば、それらについて知っておくべきでしょう:

     アーカイブのエントリは、絶対パス名を持つことが出来ます。デフォルトでは、 tar はこの問題に対する防御策として、これをリストアする前にファイル名の先頭にある / 文字を取り除きます。

アーカイブのエントリは、 .. を含むパス名を持つことが出来ます。デ フォルトでは、 tar はパス名に .. を含んでいるファイルを展開しませ ん。

アーカイブのエントリでは、ファイルを別のディレクトリにリストアす るように、シンボリックリンクを悪用することが出来ます。アーカイブ は別のディレクトリを指すシンボリックリンクをリストアすることが出 来、このリンクを使ってファイルをそのディレクトリにリストアしま す。これを防ぐため、.Nm では毎回、展開されるパスにシンボリックリ ンクが含まれるかどうかを調べます。もしパスの最後の要素がシンボ リックリンクであれば、そのシンボリックリンクは削除され、アーカイ ブの内容に置き換えられます。 −U が指定されていれば、展開されるパ スの中間に存在するシンボリックリンクも、すべて無条件に削除されま す。もし −U−P も指定しなければ、 tar はこのようなエントリを展 開するのを拒否します。
あなた自身を守るため、信用できない出処からのアーカイブには気をつけるべき です。アーカイブを展開する前に、 tar −tf filename としてアーカイブの内容を調べるべきです。 tar が既存のファイルを上書きしな いことを保証するには −k オプションを使うべきですし、既存のファイルを消去 させるには −U オプションを使うべきです。一般に、スーパユーザ権限にある時 は、アーカイブを展開するべきではありません。なお −P オプションにより、 tar は上に述べたセキュリティチェックを行わないようになり、絶対パスや .. を含むファイル、及び他のディレクトリへのシンボリックリンクを展開できるよ うになります。

関連項目

bzip2(1), cpio(1), gzip(1), mt(1), pax(1), shar(1), libarchive(3), libarchive-formats(5), tar(5)

規格

現在、tar コマンドに対する POSIX 標準はありません。 ISO/IEC 9945-1:1996 (‘‘POSIX.1’’) にはありましたが、 IEEE Std 1003.1-2001 (‘‘POSIX.1’’) では 無くなりました。本実装で使用できるオプションは、古い tar の POSIX 仕様、 現在の pax の POSIX 仕様はもちろん、現存するいくつかの tar 実装を調査して 開発されました。

ustar と pax 間のファイルフォーマット変換については、pax コマンドの IEEE Std 1003.1-2001 (‘‘POSIX.1’’) にて定義されています。

歴史

tar コマンドは Seventh Edition Unix から登場しました。他の多数の実装があ り、その多くはファイルフォーマットを拡張しています。 John Gilmore による パブリックドメイン実装の pdtar (1987 年 11 月頃) は多大な影響を及ぼ し、GNU tar の元になりました。 FreeBSD 1.0 より、GNU tar は FreeBSD 基本 システムの tar として取り込まれました。

本ソフトウェアは libarchive(3) ライブラリをベースにした、完全な再実装で す。

バグ

POSIX と GNU は −l オプションの意味について強く意見を異にしています。一方 の振舞いを期待して他方の結果を得るといった災害の可能性があるため、この実 装では、 −l オプションは故意に壊してあります。

−C dir オプションは、歴代の実装とは異なっているかも知れません。

全てのアーカイブ出力は、出力を圧縮していても、正しいサイズのブロックで書 き出されます。最後の出力ブロックがブロックサイズの大きさにパディングされ るかどうかは、フォーマットと出力デバイスによって変わります。 tar と cpio フォーマットにおいて、出力が標準出力、キャラクタ型デバイス、もしくはテー プドライブのようなブロック型デバイスの場合、出力の最後のブロックはブロッ クサイズの大きさにパディングされます。出力を通常ファイルに書き込む場合、 最後のブロックはパディングされません。 gzip(1)bzip2(1) を含む多数の圧 縮ソフトウェアは、 tar で作成されたアーカイブを復元する時、このヌルパディ ングについて文句を言いますが展開は正常に行えます。

圧縮と復元機能は内部で実装されているので、

tar −czf - file

により作成した圧縮出力と、

tar −cf - file | gzip

により作成した圧縮出力には、些細ですが違いがあります。

デフォルトでは標準の I/O パスでアーカイブを読み書きするべきですが、伝統的 に (および POSIX では) 他のものを要求します。

r および u モードでは、アーカイブは非圧縮でディスク上に通常ファイルとして 存在する必要があります。他のアーカイブは c モードと @archive-file 拡張を 用いて更新することが出来ます。

@foo-foo といった名前のファイルをアーカイブするには、それぞれ ./@foo./-foo という形式で指定する必要があります。

作成モードにおいて、先頭にある ./ は常に削除されます。先頭にある / は、 −P オプションが指定されない限り、取り除かれます。

作成及び展開における、ファイル選択のよりよいサポートが必要です。

マルチボリュームアーカイブ、および疎なファイルに対するサポートはまだあり ません。

異なるアーカイブフォーマット (tar と cpio など) を @- により変換すると、 ハードリンク情報が失われます (これは異なるアーカイブフォーマットでハード リンク情報を格納していることからくる当然の結果です)。

故意にドキュメント化していない、多くのショートオプションの代わりになるロ ングオプションがあります。

FreeBSD 10.0 April 13, 2004 FreeBSD 10.0

スポンサーリンク