BSDTAR
Section: User Commands (1)
索引
jman
BSD mandoc
索引
名称
tar
- テープアーカイブを操作する
索引
書式
[bundled-flags Ao args Ac [Ao file Ac | Ao pattern Ac ...
]
]
Br q Fl c
[options
]
[files | directories
]
Br q Fl r | Fl u
-f archive-file
[options
]
[files | directories
]
Br q Fl t | Fl x
[options
]
[patterns
]
索引
解説
はアーカイブファイルストリームの作成と操作をします。
最初の書式フォームでは
``まとめ''
(bundled)
オプション形式を表しています。
この使用法は、これまでの実装との互換性のために提供されています。
詳細は後述の「互換性」を参照してください。
その他の書式フォームが、好ましい使用法を表しています。
への最初のオプションは、次の一覧にあるモードの指示です:
- -c
-
指定されたアイテムを含んだ、新しいアーカイブを作成します。
- -r
-
-c
と似ていますが、新しいエントリはアーカイブに追加されます。
なおこれは通常ファイルの非圧縮アーカイブに対してのみ動作します。
-f
オプションが必要です。
- -t
-
標準出力にアーカイブ内容のリストを出力します。
- -u
-
-r
と似ていますが、新しいエントリの変更時刻が、アーカイブ内の対応するエントリ
のものよりも新しい場合のみ、追加されます。
なおこれは通常ファイルの非圧縮アーカイブに対してのみ動作します。
-f
オプションが必要です。
- -x
-
アーカイブからディスクに展開します。
もし同名のファイルがアーカイブ内に 2 回以上現れた場合、それぞれのコピーが
展開され、後のものがそれ以前のコピーを上書き (置換) します。
-c
-r
-u
モードにおいて、指定されたファイルまたはディレクトリは、コマンドラインで
指定された順にアーカイブに追加されます。
デフォルトでは、各ディレクトリ内のファイルもアーカイブされます。
展開またはリストモードにおいて、アーカイブをオープンする前に
コマンドライン全体が読み込まれ、解析されます。
コマンドラインのパス名またはパターンは、アーカイブ内の処理対象となる
アイテムを示します。
パターンはシェル形式のグロブパターンであり、XXXX に文書化されています。
索引
オプション
明記していないオプションは、全ての操作モードに適用可能です。
- @ archive
-
(c および r モードのみ)
指定されたアーカイブがオープンされ、そのエントリが現在の
アーカイブに追加されます。
簡単な例として、
-c -f - newfile @ original.tar
ではファイル
newfile
と、
original.tar
の全てのエントリを含む、新しいアーカイブを標準出力に書き出します。
対照的に、
-c -f - newfile original.tar
では、二つのエントリのみの新しいアーカイブを作成します。
また、
-czf - --format pax @ -
では標準入力からアーカイブを読み込み (フォーマットは自動的に判別)、
gzip で圧縮した pax フォーマットアーカイブに変換して、標準出力に出力します。
このように、
はアーカイブのフォーマットを別のものに変換する為に使うことが出来ます。
- -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-formats5
を参照してください。
- -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
オプションは、アーカイブをフィルタリングするのに特に有用です。
例として、次のコマンド
-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
-
パス名を保持します。
デフォルトでは、アーカイブの作成と展開の両方において、絶対パス名 (/ 文字で
始まっているもの) の最初のスラッシュは取り除かれます。
また
は、パス名に
..
を含んでいたり、対象ディレクトリをシンボリックリンクで変更する
アーカイブエントリを展開するのを拒否します。
本オプションはこの振舞いを抑制します。
- -p
-
(x モードのみ)
ファイルパーミッションを保持します。
アーカイブから各アイテムを展開する際、可能ならば、所有者、ファイルモード、
ファイルのフラグと ACL を含む、全てのパーミッションをリストアしようとします。
デフォルトでは、新規作成するファイルの所有者は
を実行するユーザとなり、新規作成する通常ファイルに関してはファイルモードが
リストアされ、またこれら以外のタイプのエントリはデフォルトのパーミッションに
なります。
もし
を root が実行した場合、
-o
オプションを指定しない限り、デフォルトで所有者がリストアされます。
- -T filename
-
(c モードのみ)
アーカイブすべきファイル名を
filename
から読み込みます。
ファイル名は改行で区切られます。
特別な名前である
``-C''
により、カレントディレクトリをその次の行で指定されたディレクトリに変更します。
- -U
-
(x モードのみ)
ファイルを作成する前に、いったん削除します。
本オプション無しでは、
は既存のファイルを上書きし、既存のハードリンクを保持します。
本オプションにより、既存のハードリンクは破棄され、同様に、
展開されるファイルの場所に影響を及ぼすシンボリックリンクも破棄されます。
- -v
-
冗長な出力を表示します。
作成及び展開モードにおいて、
はアーカイブに書き込み、またはアーカイブから読み出した各ファイルの名前を
リスト表示します。
リストモードにおいて、
は
ls(1)
に似た出力を表示します。
-v
オプションを追加することで、付加的な説明を表示します。
- -W longopt=value
-
ロングオプション
( -
が先行する)
は、
getopt_long3
関数が用意されているシステムでのみ、直接サポートされます。
この関数をサポートしないシステムでは、本
-W
オプションを介して、ロングオプションを使うことが出来ます。
- -w
-
あらゆる操作に対し、確認を求めます。
- -X filename
-
指定されたファイルから除外パターンのリストを読み込みます。
除外の取り扱いに関する情報については
--exclude
を参照してください。
- -y
-
(c モードのみ)
作成するアーカイブを
bzip2(1)
で圧縮します。
展開またはリストモードでは、本オプションは無視されます。
なお他の
tar
実装と異なり、本実装ではアーカイブを読み込む際には、bzip2 圧縮を
自動的に判別します。
- -z
-
(c モードのみ)
作成するアーカイブを
gzip(1)
で圧縮します。
展開またはリストモードでは、本オプションは無視されます。
なお他の
tar
実装と異なり、本実装ではアーカイブを読み込む際には、gzip 圧縮を
自動的に判別します。
索引
環境変数
次の環境変数が、
の実行に関係します:
- LANG
-
使用するロケール。
詳細は
environ(7)
を参照。
- POSIXLY_CORRECT
-
この環境変数が定義されると、
-l
オプションは
St -p1003.1-96
に従って解釈されます。
- TAPE
-
デフォルトテープデバイス。
-f
オプションはこれを無視します。
- TZ
-
日付を表示する際に使用するタイムゾーン。
詳細は
environ(7)
を参照。
索引
関連ファイル
- /dev/sa0
-
TAPE
環境変数か
-f
オプションで無視されないなら、
デフォルトのテープデバイスです。
索引
終了ステータス
Ex -std
索引
使用例
二つのファイル
source.c
と
source.h
を含む新しいアーカイブ
file.tar
を作成します:
-czf file.tar source.c source.h
アーカイブの詳細な内容一覧を表示します:
-tvf file.tar
デフォルトのテープドライブにあるアーカイブの、全てのエントリを展開します:
-x
作成モードにおいて、アーカイブされるファイルとディレクトリのリストには、
-C foo/baz
の形式でディレクトリの変更命令を取り込むことが出来ます。
また
@ archive-file
の形式でアーカイブのエントリを取り込むことも出来ます。
例えば、次のコマンドライン
-c -f new.tar foo1 @ old.tgz -C /tmp foo2
では、新しいアーカイブ
new.tar
を作成します。
はカレントディレクトリからファイル
foo1
を読み込み、出力するアーカイブに追加します。
次に
old.tgz
の各エントリを読み込み、これらのエントリを、出力するアーカイブに追加します。
最後にディレクトリを
/tmp
に変更し、
foo2
を出力するアーカイブに追加します。
索引
互換性
まとめオプション形式は、これまでの実装との互換性のためにサポートされています。
これには、各文字がオプションである頭文字 (- 文字で始まらない)
が存在します。
引数は別々の単語で続きます。
この引数の順序はまとめオプション文字内の、対応する頭文字の順序と一致している
必要があります。
例えば
tbf 32 file.tar
では、三つのフラグ
t
b
および
f
を指定しています。
b
と
f
フラグは、共に引数が必要ですので、二つの追加アイテムがコマンドラインに
必要です。
32
は
b
フラグに対する引数であり、また
file.tar
は
f
フラグに対する引数です。
モードオプションの 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 実装との互換性を
増すために、ロングオプションが使用できます。
索引
セキュリティ
確実なセキュリティは、
を含む沢山のアーカイブプログラムに共通の課題です。
特に、細工されたアーカイブは
に対して、対象とするディレクトリ以外の場所にファイルを展開するように
要求することが出来ます。
これは不注意なユーザに対し、上書きするつもりの無いファイルを
上書きさせるのに使うことが潜在的に可能です。
アーカイブをスーパユーザが展開している場合は、システム上の
あらゆるファイルが上書きされる潜在的な可能性があります。
これを引き起こす、三つの手段があります。
はそれらに対する防御機構を備えていますが、情報通のユーザならば、
それらについて知っておくべきでしょう:
-
アーカイブのエントリは、絶対パス名を持つことが出来ます。
デフォルトでは、
はこの問題に対する防御策として、これをリストアする前にファイル名の先頭にある
/
文字を取り除きます。
-
アーカイブのエントリは、
..
を含むパス名を持つことが出来ます。
デフォルトでは、
はパス名に
..
を含んでいるファイルを展開しません。
-
アーカイブのエントリでは、ファイルを別のディレクトリにリストアするように、
シンボリックリンクを悪用することが出来ます。
アーカイブは別のディレクトリを指すシンボリックリンクをリストアすることが出来、
このリンクを使ってファイルをそのディレクトリにリストアします。
これを防ぐため、.Nm では毎回、展開されるパスにシンボリックリンクが
含まれるかどうかを調べます。
もしパスの最後の要素が
シンボリックリンクであれば、そのシンボリックリンクは削除され、
アーカイブの内容に置き換えられます。
-U
が指定されていれば、展開されるパスの中間に存在する
シンボリックリンクも、すべて無条件に削除されます。
もし
-U
も
-P
も指定しなければ、
はこのようなエントリを展開するのを拒否します。
あなた自身を守るため、信用できない出処からのアーカイブには気をつけるべきです。
アーカイブを展開する前に、
-tf filename
としてアーカイブの内容を調べるべきです。
が既存のファイルを上書きしないことを保証するには
-k
オプションを使うべきですし、既存のファイルを消去させるには
-U
オプションを使うべきです。
一般に、スーパユーザ権限にある時は、アーカイブを展開するべきではありません。
なお
-P
オプションにより、
は上に述べたセキュリティチェックを行わないようになり、絶対パスや
..
を含むファイル、及び他のディレクトリへのシンボリックリンクを
展開できるようになります。
索引
関連項目
bzip2(1),
cpio(1),
gzip(1),
mt(1),
pax(1),
shar(1),
libarchive(3),
libarchive-formats5,
tar(5)
索引
規格
現在、tar コマンドに対する POSIX 標準はありません。
St -p1003.1-96
にはありましたが、
St -p1003.1-2001
では無くなりました。
本実装で使用できるオプションは、古い tar の POSIX 仕様、現在の
pax の POSIX 仕様はもちろん、現存するいくつかの tar 実装を調査して
開発されました。
ustar と pax 間のファイルフォーマット変換については、pax コマンドの
St -p1003.1-2001
にて定義されています。
索引
歴史
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)
を含む多数の圧縮ソフトウェアは、
で作成されたアーカイブを復元する時、このヌルパディングについて文句を言いますが
展開は正常に行えます。
圧縮と復元機能は内部で実装されているので、
-czf - file
により作成した圧縮出力と、
-cf - file | gzip
により作成した圧縮出力には、些細ですが違いがあります。
デフォルトでは標準の I/O パスでアーカイブを読み書きするべきですが、
伝統的に (および POSIX では) 他のものを要求します。
r
および
u
モードでは、アーカイブは非圧縮でディスク上に通常ファイルとして存在する
必要があります。
他のアーカイブは
c
モードと
@archive-file
拡張を用いて更新することが出来ます。
@foo
や
-foo
といった名前のファイルをアーカイブするには、それぞれ
./@foo
や
./-foo
という形式で指定する必要があります。
作成モードにおいて、先頭にある
./
は常に削除されます。
先頭にある
/
は、
-P
オプションが指定されない限り、取り除かれます。
作成及び展開における、ファイル選択のよりよいサポートが必要です。
マルチボリュームアーカイブ、および疎なファイルに対するサポートはまだありません。
異なるアーカイブフォーマット (tar と cpio など) を
@ -
により変換すると、ハードリンク情報が失われます
(これは異なるアーカイブフォーマットでハードリンク情報を格納していることからくる
当然の結果です)。
故意にドキュメント化していない、多くのショートオプションの代わりになる
ロングオプションがあります。
索引
Index
- 名称
-
- 書式
-
- 解説
-
- オプション
-
- 環境変数
-
- 関連ファイル
-
- 終了ステータス
-
- 使用例
-
- 互換性
-
- セキュリティ
-
- 関連項目
-
- 規格
-
- 歴史
-
- バグ
-
Time: 07:06:19 GMT, January 12, 2009