.\" Copyright (c) 1991, 1992, 1993 Free Software Foundation -*- nroff -*- .\" See /usr/src/gnu/COPYING for conditions of redistribution .\" .\" Written by John F. Woods .\" Updated by Robert Eckardt .\" .\" %FreeBSD: src/gnu/usr.bin/tar/tar.1,v 1.43 2002/12/12 17:25:52 ru Exp % .\" .\" $FreeBSD$ .Dd December 23, 2000 .Os .Dt TAR 1 .Sh 名称 .Nm tar .Nd "テープアーカイバ; ""tar"" アーカイブファイルの操作" .Sh 書式 .Nm .Op Oo Fl Oc Ns Ar bundled-options Ar Args .Op Ar gnu-style-flags .Op Ar filenames | Fl C Ar directory-name .Ar ... .Sh 解説 .Nm は、歴史的な理由により .Dq tape archiver を省略して名付けられました。 .Nm プログラムは、 .Ar tarfile と呼ばれる .Nm フォーマットのアーカイブファイルを作成し、アーカイブにファイルを追加したり、 またアーカイブからファイルを抽出したりします。 .Ar tarfile は通常磁気テープを指しますが、フロッピディスケットや 通常のファイルでも構いません。 .Pp 通常、 .Nm コマンドラインの最初の引数は、機能文字および機能変更文字からなる単語であり、 その前に ダッシュ (-) を付けても付けなくてもいいようになっています。 単語には、次の機能文字のうち丁度 1 つを含んでいる必要があります: .Cm A , .Cm c , .Cm d , .Cm r , .Cm t , .Cm u , .Cm x , これらはそれぞれ、 .Em 追加 (append) 、 .Em 作成 (create) 、 .Em 差分 (difference) 、 .Em 置換 (replace) 、 .Em リスト表示 (table of contents) 、 .Em 更新 (update) 、 .Em 抽出 (extract) を意味しています (下記に詳細があります)。 これらの他に、以下に詳細を述べる機能変更文字を、コマンド単語に 含めることができます。それらのいくつかは、コマンド単語内と同じ順で コマンドライン引数を要求します ( .Sx 使用例 の節を参照)。 機能文字と機能変更文字は、GNU 形式の引数で指定することもできます (2 つのダッシュを最初に付け、1 つのコマンド単語ごとに機能文字か 機能変更文字を 1 つだけ指定する)。 アーカイブへの追加、アーカイブからの抽出、そしてリスト表示のために コマンドライン指定するファイル名には、 シェルのパターンマッチ文字列を使用することができます。 .Sh 機能 以下の機能のいずれか 1 つだけを必ず指定する必要があります。 .Pp .Bl -tag -width "--concatenate" -compact .It Fl A .It Fl -catenate .It Fl "-concatenate" 指定された ( .Nm アーカイブ形式の) ファイルを tar アーカイブの末尾 に追加します (追加する前の古い end-of-archive ブロックは削除さ れます)。 これは、指定されたファイルがアーカイブの中の 1 ファイルとなるので はなく、指定したファイルの中に含まれているファイルを、最初に指定 したアーカイブに追加するという効果を持ちます。 .Em 注 : このオプションは .Ar tarfile を再書き込みする必要があるため、1/4 インチカートリッジテープでは動作しません。 .It Fl c .It Fl -create 新しいアーカイブを作成して (もしくは古い内容を切り捨てて)、指定 されたファイルをアーカイブに書き込みます。 .It Fl d .It Fl -diff .It Fl -compare アーカイブの中のファイルと、それに相当するファイルシステム内の ファイルとの違いを調査します。 .It Fl -delete 指定されたファイルをアーカイブから削除します (1/4 インチテープでは動作しません)。 .It Fl r .It Fl -append アーカイブの末尾にファイルを追加します (1/4 インチテープでは動作しません)。 .It Fl t .It Fl -list アーカイブ内容のリスト表示をします。もし引数として .Ar filename が指定されていれば、そのファイルだけがリスト表示されます。 そうでなければ、アーカイブに含まれるすべてのファイルリストが表示されます。 .It Fl u .It Fl -update 指定したファイルのうち、アーカイブ内のファイルよりもディスク上の ファイルの変更時刻が新しいものだけを追加します。1/4 インチテープ では動作しません。 .It Fl x .It Fl -extract .It Fl -get アーカイブからファイルを抽出します。可能ならば、所有者、 変更時刻、ファイル属性はリストアされます。もし .Ar file 引数が指定されていなければ、アーカイブ内の全ファイルが抽出されます。 もし .Ar filename 引数がテープ上のディレクトリ名にマッチしていれば、そのディレクトリと ディレクトリ内のファイルが抽出されます (ディレクトリ内の すべてのディレクトリについても同様に抽出されます)。 もしアーカイブ内に、相当する同じファイルが複数含まれていれば (上記の .Fl -append コマンドを参照)、最後に含まれているものが他のすべてのファイルを 上書きする形で抽出されます。 .El .Sh オプション .Nm の他のオプションは、組み合わせて使用することができます。 1 文字オプションは、コマンド単語の中で指定することができます。 引数を与えるべきオプションの場合、オプションに続けて引数を指定し ます。1 文字オプションであれば、これに続くコマンドライン引数を 使用します (以下の .Sx 使用例 を参照してください)。 .Pp .Bl -tag -width "--preserve-permissions" -compact .It Fl -help .Nm のすべてのコマンドオプションについて一覧と解説を表示します。 .It Fl -atime-preserve テープに書かれている、ファイルのアクセス時刻をリストアします。 (inode の変更時刻が変更されることに注意してください!) .It Fl b .It Fl -block-size Ar number 読み書きするブロックサイズを .Ar number * 512-byte ブロック に設定します。 .It Fl B .It Fl -read-full-blocks 短い読みだしブロックを、完全なブロックに再組み立てします ( .Bx 4.2 パイプの読み込み用)。 .It Fl C Ar directory .It Fl -directory Ar directory 残りの引数を処理する前に .Ar directory へ移動します。 .It Fl -checkpoint アーカイブを読み書きする間に読み書きしたバッファの数を表示します。 .It Fl f Xo .Oo Ar hostname : Oc Ns Ar file .Xc .It Fl -file Xo .Oo Ar hostname : Oc Ns Ar file .Xc 指定された .Ar file (デフォルトは .Pa /dev/sa0 ) を読み書きします。 もし .Ar hostname が指定されていれば、 .Nm は .Xr rmt 8 を使って、リモートマシン上の .Ar file を読み書きします。 .Dq Ar - はファイル名として使用されることもありますが、 これは標準入力から読み出したり、標準出力へ書き出したりするために使用されます。 .It Fl -force-local コロンがある時でさえ、アーカイブファイルはローカルのものとします。 .It Fl F Ar file .It Fl -info-script Ar file .It Fl -new-volume-script Ar file それぞれのアーカイブが終ると、スクリプトを実行します (暗黙の .Fl M 指定が行なわれます)。 .It Fl -fast-read ワイルドカードで指定されていないすべての抽出ターゲットが アーカイブ内に見つかったら、その時点で終了します。 .It Fl G .It Fl -incremental 古い GNU-format インクリメンタルバックアップファイルを作成/リスト/抽出します。 .It Fl g Ar file .It Fl -listed-incremental Ar file 新しい GNU-format インクリメンタルバックアップファイルを 作成/リスト/抽出します。 .It Fl h .It Fl -dereference シンボリックリンクをシンボリックのまま書き込みません。シンボリックリンクが 指しているデータを書き込みます。 .It Fl i .It Fl -ignore-zeros アーカイブの中の 0 ブロック (通常、End-Of-File を意味する) を無視します。 .It Fl -ignore-failed-read ファイルが読めなくても、非 0 のステータスで exit しません。 .It Fl j .It Fl y .It Fl -bzip .It Fl -bzip2 .It Fl -bunzip2 アーカイブを .Xr bzip2 1 でフィルタリングします。 .It Fl k .It Fl -keep-old-files ディスク上に既にあるファイルを保持します。つまり、アーカイブから 抽出するファイルは、ディスク上のファイルへ上書きしません。 .It Fl K Ar file .It Fl -starting-file Ar file アーカイブの中の .Ar file から (抽出、リストなどを) 始めます。 .It Fl l .It Fl -one-file-system あるファイルシステム内にあるファイルだけでアーカイブを作成します (他ファイルシステムへのマウントポイントを跨ぎません)。 .It Fl L Ar number .It Fl -tape-length Ar number .Ar number * 1024 バイト書き込んだ後でテープの交換を要求します。 .It Fl m .It Fl -modification-time ファイルの変更時刻を抽出しません。 .It Fl M .It Fl -multi-volume マルチボリュームアーカイブを作成/リスト/抽出します。 .It Fl n .It Fl -norecurse 作成時に再帰的にサブディレクトリを走査しません。 .It Fl -volno-file Ar file ボリューム番号付きのファイル名です。 .It Fl N Ar date .It Fl -after-date Ar date .It Fl -newer Ar date 作成時間が .Ar date より新しいファイルだけを抽出します。 .It Fl -newer-mtime Ar date 変更時間が .Ar date より新しいファイルだけを抽出します。 .It Fl o .It Fl -old-archive .It Fl -portability POSIX フォーマットではなく、V7 フォーマットのアーカイブを作成します。 .It Fl O .It Fl -to-stdout ファイルを標準出力に抽出します。 .It Fl p .It Fl -same-permissions .It Fl -preserve-permissions 保護情報を完全に抽出します。 .It Fl -preserve .Fl p s の指定と同じ効果を持ちます。 .It Fl P .It Fl -absolute-paths ファイル名から先頭の .Ql / をとりません。 .It Fl R .It Fl -record-number メッセージ中にアーカイブ内のレコード番号を埋め込み表示します。 .It Fl -remove-files アーカイブに追加したファイルを、追加後に削除します。 .It Fl s .It Fl -same-order .It Fl -preserve-order アーカイブ内から抽出するファイルを、指定された順のままにします。 .It Fl -show-omitted-dirs アーカイブ作成中に除外されたディレクトリを表示します。 .It Fl S .It Fl -sparse .Dq 疎な ファイルを効率的に扱うようにします。 .It Fl T Ar file .It Fl I Ar file .It Fl -files-from Ar file .Ar file から抽出もしくは作成するファイル名を得ます (1 行 1 ファイル名)。 .It Fl -null null で終わっている名前を考慮し、 .Fl T の振舞を変更します。 これは .Fl C 指定を無効にします。 .It Fl -totals .Fl -create によって書かれた総バイト数を表示します。 .It Fl U .It Fl -unlink .It Fl -unlink-first ファイルを作成する前に、いったん削除します。 .It Fl v .It Fl -verbose .Fl -create でアーカイブに書くファイルや .Fl -extract でアーカイブから 取り出すファイル名をリスト表示します。 ファイルの保護情報をファイル名とともに表示させるには、 .Fl -list を使います。 .It Fl V Ar volume-name .It Fl -label Ar volume-name 指定された .Ar volume-name を持ったアーカイブを作成します。 .It Fl -version .Nm プログラムのバージョン番号を表示します。 .It Fl w .It Fl -interactive .It Fl -confirmation すべての動作に対して、確認を求めるようになります。 .It Fl W .It Fl -verify アーカイブを書き込んだ後、ベリファイを試みます。 .It Fl -exclude Ar pattern .Ar pattern にマッチするファイルを除外します (抽出しません。追加しません。リスト表示しません)。 .It Fl X Ar file .It Fl -exclude-from Ar file .Ar file に一覧されているファイルを除外します。 .It Fl Z .It Fl -compress .It Fl -uncompress アーカイブを .Xr compress 1 でフィルタリングします。 .It Fl z .It Fl -gzip .It Fl -gunzip アーカイブを .Xr gzip 1 でフィルタリングします。 .It Fl -use-compress-program Ar program アーカイブを .Ar program でフィルタリングします (これは、 .Fl d が指定されたときは .Dq decompress を意味しなければなりません)。 .It Fl -block-compress テープもしくはフロッピのために、圧縮プログラムの出力をブロック 化します (そうしないと、ブロック長がおかしくなり、デバイスドライバは そのブロックを拒絶するでしょう)。 .It Fl Xo .Op Cm 0 Ns - Ns Cm 7 Ns .Op Cm lmh .Xc テープドライブと密度を指定します。 .El .Sh 環境 環境変数 .Ev TAR_OPTIONS に .Nm のデフォルトオプションを保持させることが可能です。 これらのオプションは最初に解釈されますので、 明示的なコマンドラインパラメータで上書き可能です。 .Sh 使用例 .Pa bert と .Pa ernie というファイルを含む、 ブロックサイズが 20 ブロックのアーカイブを、 テープドライブ .Pa /dev/sa0 に作るには、 .Dl "tar cfb /dev/sa0 20 bert ernie" もしくは .Dl "tar --create --file /dev/sa0 --block-size 20 bert ernie" と入力します。 .Fl f および .Fl b フラグは両方とも引数を必要としていることに注意してください。 この引数は、コマンド単語に書かれているのと同じ順序でコマンドラインから 取得されます。 .Pp .Pa /dev/sa0 はデフォルトのデバイスであり、20 はデフォルトのブロック サイズですので、上記の例は次のように単純化できます。 .Dl "tar c bert ernie" \&"backup.tar" というアーカイブから、すべての C ソース及びヘッダを 抽出するには、次のようにタイプします。 .Pp .Dl tar xf backup.tar '*.[ch]' .Pp シェルがカレントディレクトリ内のファイル名に展開しないよう、パターンを クォートしなければならないことに注意してください (当然、 シェルはアーカイブ内のファイル一覧にアクセスすることはできません)。 .Pp ファイルを階層構造ごとコピーするには、このようにコマンドを使用してください: .Bd -literal tar cf - -C srcdir . | tar xpf - -C destdir .Ed .Pp ディスケットに、 .Xr gzip 1 を使った圧縮アーカイブを作成するには、次の ようなコマンドラインを使うといいでしょう。 .Dl "tar --block-compress -z -c -v -f /dev/fd1a -b 36 tar/" .Pp まとめ指定フラグと .Fl - スタイルのフラグを混在させることができない ことに注意してください。次のようにタイプしなければならないわけで はなく、上記のような書き方で 1 文字フラグを使うことができます。 .Dl "tar --block-compress --gzip --verbose --file /dev/fd1a --block-size 20 tar/" .Pp 上のようにして作成したディスクの内容は、次のようにすればリスト 表示できます。 .Pp .Dl "tar tvfbz /dev/fd1a 36" .Pp 2 つの .Nm アーカイブを 1 つのアーカイブにまとめるには、 .Dl "tar Af archive1.tar archive2.tar" を使います。こうすると、 .Pa archive2.tar に含まれているファイルが .Pa archive1.tar の末尾に追加されます (単純に .Dl "cat archive2.tar >> archive1.tar" とタイプしてもうまくいかないことに注意してください。なぜなら、 .Nm アーカイブの末尾には end-of-file ブロックがあるからです)。 .Pp .Pa srcdir ディレクトリから 1997 年 2 月 9 日 13:00 以降に変更をされた 全てのファイルをアーカイブするためには、以下の形式を使って下さい。 .Dl "tar -c -f backup.tar --newer-mtime 'Feb 9 13:15 1997' srcdir/" .Pp 他の時間指定形式としては、 .Sq "02/09/97 13:15" , .Sq "1997-02-09 13:15" , .Sq "13:15 9 Feb 1997" , .Sq "'9 Feb 1997 13:15" , .Sq "Feb. 9, 1997 1:15pm" , .Sq "09-Feb" , .Sq "3 weeks ago" , .Sq "May first Sunday" があります。 正しいタイムゾーンを指定するためには、 .Sq "13:15 CEST" や .Sq "13:15+200" を使用して下さい。 .Sh 環境変数 .Nm プログラムは、以下の環境変数を参照します。 .Bl -tag -width "POSIXLY_CORRECT" .It Ev POSIXLY_CORRECT 通常、 .Nm はファイル指定の中に混ざったフラグを処理します。 この環境変数を設定すると、 .Nm は最初のフラグ以外の引数を見つける とそれ以降の引数に対してフラグ処理を行なわないという、POSIX 仕様 に合わせた動作を行なうようになります。 .It Ev SHELL インタラクティブモードにおいて、サブシェルの起動が要求されたとき、 .Ev SHELL 変数が設定されていればそれが、設定されていなければ .Pa /bin/sh が使用されます。 .It Ev TAPE .Nm のデフォルトのテープドライブを変更します (これは、さらに .Fl f フラグによって変更することができます)。 .It TAR_RSH TAR_RSH 環境変数は、デフォルトシェルに優先して、 .Nm tar のデータ転送に使用されます。 .El .Sh 関連ファイル .Bl -tag -width "/dev/sa0" .It Pa /dev/sa0 デフォルトのテープドライブ .El .Sh 互換性 .Fl y は FreeBSD だけの機能です。 GNU .Nm メンテナは、 .Fl j を GNU .Nm 1.13.18 以降における公式な .Xr bzip2 1 圧縮オプションとして採用しました。 .Fl I オプションは、Solaris の .Nm との互換性のためにあります。 .Sh 関連項目 .Xr bzip2 1 , .Xr compress 1 , .Xr gzip 1 , .Xr pax 1 , .Xr rmt 8 .Sh 歴史 .Nm フォーマットは立派な歴史を持っていて、Sixth Edition UNIX に 原点があります。 この .Nm の実装は GNU 実装であり、 .An John Gilmore によって書かれた パブリックドメイン .Nm が元になっています。 .Sh 作者 .An -nosplit 次の人を含む、大変多くの人々。[ソースの中の .Pa ChangeLog ファイルに記述されている人々] .An John Gilmore (オリジナルのパブリックドメイン版の作者), .An Jay Fenlason (最初の GNU 作者), .An Joy Kendall , .An Jim Kingdon , .An David J. MacKenzie , .An Michael I Bushnell , .An Noah Friedman そして バグフィックスや追加を貢献してくれた無数の人々。 .Pp このマニュアルページは .Nx 1.0 release から、 .Fx グループが 取り込んだものです。 .Sh バグ 特徴的な .Fl C オプションの動作は、伝統的な .Nm プログラムのそれとは異なるので、 あまり頼りにはできません。 .Pp .Fl A コマンドで任意の数の .Nm アーカイブを結合できればいいのですが、それはできません。 これをやろうとしても、2 つ目以降のアーカイブの end-of-archive ブロックが削除されずに残ってしまいます。 .Pp .Nm ファイルフォーマットは準固定幅フィールドフォーマットであり、 デバイス番号用のフィールドは 16 ビット用 (メジャー 8 ビットでマイナ 8 ビット) にデザインされており、我々の 32 ビット番号 (メジャー 8 ビットでマイナ 16+8 ビット) を吸収できません。