名前 | 形式 | 機能説明 | オプション | オペランド | 使用法 | 使用例 | 環境 | 終了ステータス | ファイル | 属性 | 関連項目 | 診断 | 注意事項
tar コマンドは、複数のファイルを tarfile と呼ばれる 1 つのファイルに保管したり、抽出したりします。 通常、 tarfile は磁気テープですが、 その他のファイルであってもかまいません。 tar の動作は、 キー (key) 引数によって制御されます。 キーは、機能文字 (c、r、t、u、または x) 1 つと、使用される機能文字に応じて、これに続く 機能修飾子 ( 文字または数字 ) からなる文字列です。 key 文字列は空白文字を含みません。 機能修飾子に対する引数は key 文字列で使用した順序で コマンド行に指定します。
-I include-file、–C directory file、file 引数は、 どのファイルまたはディレクトリを保管または抽出するかを指定します。 いずれの場合も、ディレクトリ名を使用すると、 そのディレクトリのすべてのファイルやサブディレクトリを (再帰的に) 参照します。 中括弧 ({ }) で囲まれた引数は、 そのうちのどれか 1 つの引数を指定することを示します。
以下にオプションを示します。
1 行につき 1 つのファイル名からなるファイルの一覧を含んだ include-file をオープンし、 各ファイルがコマンド行で 指定されたのと同様に処理します。 include-file の行末に不要な空白を置かないように注意してください。 また、各行頭にも不要な空白を置かないように注意してください。 組み込むファイルの最初の文字列に対する一致には、 改行で分かれている行全体が使用されます。 除外されたファイルが存在する場合には (X 機能修飾子を参照) 、 除外されたファイルは 組み込まれたファイルよりも 優先されます。 したがって、あるファイルが exclude-file と include-file の両方のファイル (またはコマンド行上) で指定されていれば、そのファイルは 除外されます。
directory に対して chdir (cd(1) 参照) を実行し、file に c (作成) または r (置換) を実行します。file には短い相対パス名を使用します。file が `.' の場合には directory 以下のすべてのファイルを保存します。 このオプションを使うと 共通の親ディレクトリを持たない 複数のディレクトリ中のファイルを保存できます。
以下にオペランドを示します。
保存 (c、r、または u 機能を指定した場合) 、 抽出 (x) 、または表示 (t) される通常ファイルまたはディレクトリの パス名。file がディレクトリのパス名である場合、動作はそのディレクトリ以下のすべてのファイルと ( 再帰的に ) サブディレクトリに適用します。
ファイルがアーカイブで、 E フラグ (「機能修飾子」を参照) が指定されていない場合、ファイル名は 256 文字を超えることはできません。 さらに、親ディレクトリ名との間を分割して考えると、 ディレクトリ名部分は 155 文字、ファイル名部分は 100 文字を超えることはできません。E フラグが指定されている場合、PATH_MAX で指定されている文字までファイル名に指定できます。
たとえば、ファイル名部分が 100 文字を超えるファイルは、E フラグを指定しないと保存されない可能性があります。ディレクトリ名部分が 200 文字で、 ファイル名部分が 50 文字であるファイルは、ディレクトリ名の 151 文字目から 156 文字目のどこかにスラッシュが 1 つ入っていれば、 E フラグを指定しなくても保存されます。
キーの機能部分は、以下の文字のいずれか 1 つで指定します。
作成。 tarfile の最初から書き込みます。最後からではありません。
置換。指定した file を tarfile の最後に書き込みます。 拡張ヘッダーを付けて作成したファイルは、 拡張ヘッダーを付けて更新する必要があります (「機能修飾子」の E フラグの説明を参照)。 拡張ヘッダーなしで作成したファイルは、 拡張ヘッダーを付けて修正することはできません。
内容の一覧表示。指定されたファイルが tarfile に検出されるごとに、 ファイル名が表示されます。file 引数を指定していない場合は、 tarfile のファイル名全部と関連する拡張属性が表示されます。 v 機能修飾子をともに指定すると、指定したファイルの追加情報が表示されます。
更新。指定された file が tarfile にまだ入っていない場合、または最後に tarfile へ書き込まれて以来変更があった場合は、 file は tarfile の最後に追加されます。 更新には時間のかかる場合があります。 SunOS 5.x システム上で作成された tarfile は SunOS 4.x システム上では更新できません。 拡張ヘッダーを付けて作成したファイルは、 拡張ヘッダーを付けて更新する必要があります (「機能修飾子」の E フラグの説明を参照)。 拡張ヘッダーなしで作成したファイルは、 拡張ヘッダーを付けて修正することはできません。
抽出または復元。 指定された file が tarfile から抽出され、 ( 現在のディレクトリからの相対パスで ) tarfile で指定されたディレクトリに書き込まれます。 そのため、 tarfile にファイルを書き込む際には、ファイルとディレクトリの相対パス名を使用してください。
tar アーカイブに含まれる絶対パス名を復元するときには、絶対パス名を使用します。つまり、先頭のスラッシュ (/) は取り除かれません。
指定されたファイルが、ディレクトリで内容が tarfile に書き込まれている場合は、 このディレクトリは再帰的に抽出されます。 tar コマンドが、ファイルあるいはディレクトリを見つけられないことのないように、 適宜、ファイルやディレクトリの相対パスを使用してください。 可能であれば、所有者、変更時間およびモードを復元します 。所有者を復元するには、スーパーユーザーである必要があります。 文字型特殊デバイスと ブロック型特殊デバイス ( mknod(1M) で作成 ) は、 スーパーユーザーによってのみ抽出できます。file 引数が指定されない場合は、 tarfile の全体の内容を抽出します。 tarfile に同じ名前のファイルが複数ある場合は、 各ファイルはパス名通りにディレクトリに書き込まれ、 それ以前のファイルを上書きします。 アーカイブからファイルを抽出する場合は、 ファイル名にワイルドカードを使用することはできません。 この場合には、 次の形式のコマンドを使用してください。
tar xvf ... /dev/rmt/0 `tar tf ... /dev/rmt/0 | \ grep 'pattern' ` |
r または u 機能を使って作成した tarfile から抽出した場合、 ディレクトリ修正時刻が正しく設定されないことがあります。 また、これらの機能は、 バックスペースや追加などの機能がないという テープドライブの制限のために、 多くのテープドライブでは使用できません。
r、u 、または x 機能、 あるいは X 機能修飾子を使用する場合には、 tarfile 中の対応するファイルとパス名が 一致している必要があります。 たとえば、 ./thisfile を抽出するためには、 thisfile ではなく ./thisfile を指定してください。 t 機能はどのように各ファイルが保存されているかを 表示します。
以下の文字は、使用する機能文字に付けて使用します。
ブロック化因数。 生の磁気テープアーカイブに読み取り、または書き込みを する場合に使用します (下記の f を参照) 。block 引数では tarfile 上で実行した読み取りや書き込みの各操作で含まれる 512 バイトの テープブロックの 数を指定します。 最小は 1、デフォルトは 20 です。 最大値は 使用可能なメモリーの総量と使用する テープデバイス固有のブロック化条件によって決まります (詳細は mtio(7I) を参照 ) 。 最大値は INT_MAX/512 (4194303) を超えることはできません。
テープアーカイブを読み取る場合は、 実際のブロック化因数が自動的に検出され、 名目上のブロック化因数 ( b 修飾子を指定していない場合は、 block 引数の値かデフォルト値 ) よりも少ないか、 あるいは等しい値が割り当てられます。 実際のブロック化因数が名目上のブロック化因数よりも 大きい場合、 結果は読み取りエラーになります。 「使用例」の項の例 5 を参照してください。
ブロック。 tar は、 (必要であれば) 複数の読み取り操作を実行し、 ブロックを埋めるのに十分なバイト数だけを読み取ります。 パイプやソケットは、 それ以降の入力がある場合でもブロックを部分的に返すので、 この機能修飾子は tar がイーサネットを介して動作することを可能にしています。 標準入力 (–) から読み取る場合、 tar がブロックを埋めるのに十分なバイト数を読み取れるように この機能修飾子が デフォルトで選択されます。
エラー。予想外のエラーが発生した場合は、 すぐに終了すると同時に、正の終了ステータスを返します。SYSV3 環境変数はデフォルトの動作を無効にします (「環境」の項を参照)。
拡張ヘッダーを付けて tarfile を書き込みます (c、r、u オプションで使用可能、t、x オプションでは無効)。tarfile が拡張ヘッダー付きで書き込まれた場合、 その修正時刻は秒単位ではなく マイクロ秒単位で続けられます。さらにファイル名の文字数が PATH_MAX 文字 (保存には E フラグが必要) 以下で、 ファイルサイズが 8G バイトを超えるファイルの場合もサポートします。 E フラグは、 サイズの大きいファイルや名前の長いファイル、 またはその両方の場合、 あるいはユーザー ID またはグループ ID が 2097151 を超えるときに保存したい場合、 マイクロ秒単位の時間を取りたい場合に 有用です。
ファイル。 tarfile として パス名を指定します。f を指定すると、 /etc/default/tar を検索しません。 f を省略した場合には、 tar は TAPE 環境変数 ( 設定されている場合 ) が示すデバイス を使用します。この変数の設定もなければ、 デフォルトの値は /etc/default/tar に定義されています。 数字 N を使用すると、/etc/default/tar 内で archiveN (N は数字) に指定されている出力デバイス (ブロック化とサイズの指定付き) を参照できます。次に例を示します。
tar -c 2/tmp/* |
このコマンドは、/etc/default/tar において archive2 に指定されているデバイスに出力を書き込みます。
tarfile の名前が - である場合は、 tar は標準出力への書き込みあるいは 標準入力からの読み取りのいずれか適当な操作を行います。 tar はパイプラインの先頭もしくは末尾として使用することができます。 また、次のコマンドを使えば、 tar は、ディレクトリ階層を移動するためにも使用することができます。
example% cd fromdir; tar cf - .| (cd todir; tar xfBp -) |
F 引数を 1 つ指定すると、 tar は tarfile から SCCS および RCS の名前のついたすべてのディレクトリを除外します。 FF のように引数を 2 つ指定すると、 tar は SCCS および RCS の名前のついたすべてのディレクトリ、接尾辞として .o を持つすべてのファイル、および errs、core、a.out という名前のファイルをすべて除外します。SYSV3 環境変数はデフォルトの動作を無効にします (下記を参照)。
シンボリックリンクをたどり、 通常ファイルあるいはディレクトリとして扱います。 通常、 tar はシンボリックリンクをたどりません。
ディレクトリ・チェックサム・エラーを無視します。
サイズの引数を、 K バイト単位の アーカイブサイズとして使用するように要求します。 アーカイブが、フロッピーディスクのような 固定されたサイズのデバイスを指す場合に便利です。 大規模なファイルが、 指定されたサイズに合わない場合には、 ボリュームにまたがって分割されます。
リンク。保管されるファイルのリンクで、 tar が解決できないものがある場合、 エラーメッセージを出力します。 l が指定されない場合は、エラーメッセージは表示されません。
修正。 ファイルの変更時刻を抽出した際の時刻に設定します。この機能修飾子は、 x 機能とともに用いた場合のみ有効です。
テープデバイスにないファイルを読み込みます。 tar は、 アーカイブ内部を読み取り専用で探すことができるため、 アーカイブの読み込みは速くなります。
オーナーシップ。 抽出されたファイルに、 tarfile 上のユーザー識別子やユーザーのグループ識別子を使用する代わりに、 プログラムを実行するユーザーのユーザー識別子や グループ識別子を割り当てます。これは、 スーパーユーザーではないユーザーに対してデフォルトで行われます。o 機能修飾子が指定されておらず、さらにユーザーが スーパーユーザーである場合、 抽出されたファイルは、 tarfile 上のファイルのグループ識別子とユーザー識別子 を使用します(詳細は、chown(1) を参照)。 o 機能修飾子は、 x 機能とともに用いた場合のみ有効です。
現在の umask(1) を無視して、指定されたファイルを元のモード、 および ACL が有効であれば、 ACL を戻します。スーパーユーザーとして x 機能文字を指定して起動した場合は、 これがデフォルトの動作になります。 スーパーユーザーである場合は、 SETUID およびスティッキ情報も抽出し、 ファイルは スーパーユーザーの所有ではなく、元の所有者とアクセス権に復元されます。この機能修飾子を、 c 機能とともに使用した場合、 ACL は他の情報と共に tarfile に作成されます。ACL の入った tarfile が tar の前のバージョンによって抽出された場合、 エラーが起こることがあります。
アーカイブ中のディレクトリの末尾にスラッシュ (/) を付加しません。
名前付きファイルを最初に抽出したあとで 中止します。 通常、 tar はファイルを検索したあともアーカイブの読み取りを続行します。
冗長出力。 機能文字に続けて、 各ファイル名を出力します。 t 機能とともに使用すると、 v は、 tarfile エントリに関する詳しい情報も提供します。 表示は ls(1) コマンドの -l オプションによる出力形式に似ています。
処理の指示。 とるべき処理とファイル名を出力し、 ユーザーの確認を待ちます。 応答が肯定である場合、この動作が実行されます。 そうでない場合には処理は行われません。この機能修飾子は、 t 機能と同時には使えません。
除外。機能 c、x 、または、 t を使用した場合に、 tarfile から除外されるファイル (あるいはディレクトリ) の相対パス名のリストを収めたファイルとして、exclude-file 引数を使用します。 exclude-file の行末に不要な空白を置かないように注意してください。 また、各行頭にも不要な空白を置かないように注意してください。 除外するファイルの最初の文字列に対する一致には、 改行で分かれている行全体が使用されます。 引数 1 つにつき 1 つの exclude-file で、複数の X 引数を使用することができます。 この場合、 組み込まれたファイルが存在する場合には (-I include-file オプションを参照) 、 除外されたファイルは 組み込まれたファイルよりも 優先されます。 したがって、 あるファイルが exclude-file と include-file の両方のファイル (またはコマンド行上) で指定されていれば、そのファイルは 除外されます。
拡張属性をアーカイブに取り込みます。デフォルトでは、tar は拡張属性をアーカイブに取り込みません。このフラグを使用すると、tar はファイルが拡張属性を持っているかどうかを調べて、持っていれば、拡張属性をアーカイブに取り込みます。アーカイブにおいて、拡張属性は特殊な種類のラベルを持つ特殊なファイルとして格納されます。この修飾子を x 機能と一緒に使用すると、拡張属性は通常のファイルのデータと一緒にテープから抽出されます。拡張属性ファイルは、通常のファイルのデータの一部としてのみ抽出できます。拡張属性ファイルだけを明示的に抽出しようとすると無視されます。
テープをマウントする代替ドライブを選択します。 デフォルトは、 /etc/default/tar に指定されています。 数字または f 機能修飾子が指定されなければ、 0 を持つ /etc/default/tar 中のエントリがデフォルトになります。
検出するファイルが 2G バイト (231 バイト) 以上ある場合の tar の動作については、 largefile(5) を参照してください。
実際のブロック化因数の自動決定は、パイプやソケットからの読み取り時には正しく行われないことがあります (B 機能修飾子を参照)。
1/4 インチのストリームテープは 512 バイト単位のブロック化因数を持つので、 すべてのブロック化因数を使用して、 読み取りまたは書き込みが可能です。
この機能修飾子は、 ディスクファイルや ブロック型特殊デバイス上の アーカイブに対して動作しますが、 主としてテープデバイス用を目的としています。
tar のヘッダー形式の情報については archives(4) を参照してください。
tar を使用して、ドライブ /dev/rmt/0 にマウントされたテープにユーザーのホームディレクトリの アーカイブを作成する例を示します。
example% cd example% tar cvf /dev/rmt/0 . tar からのメッセージ |
c 機能文字は、アーカイブの作成を意味します。 v 機能修飾子は、tar の動作状況を説明するメッセージを出力します。f 機能修飾子は、 tarfile を指定している (この例では /dev/rmt/0) ことを示します。 コマンド行の最後のドット (.) は現在のディレクトリを示し、 f 機能修飾子の引数になります。
次のコマンドで、 tarfile の内容の一覧を表示します。
example% tar tvf /dev/rmt/0 |
POSIX ロケールでは、 次のように出力されます。
rw-r--r-- 1677/40 2123 Nov 7 18:15 1985 ./test.c ... example% |
カラム 1 は、./test.c へのアクセス権
カラム 2 は、./test.c の ユーザー ID またはグループ ID
カラム 3 は、./test.c のバイトサイズ
カラム 4 は、./test.c の修正時刻。 LC_TIME カテゴリが POSIX ロケールに設定されていない場合、 形式や日付順フィールドが異なって使用されることがあります。
カラム 5 は、./test.c のファイル名
アーカイブから、ファイルを 抽出するためには、 次のコマンドを使用します。
example% tar xvf /dev/rmt/0 tar からのメッセージ example% |
テープ上に複数のアーカイブファイルがある場合は、 それぞれのファイルは、 EOF マーカによって次のファイルと区切られます。 tar を使用して複数のアーカイブファイルが入っているテープから 1 番目と 2 番目のアーカイブファイルを読ませる場合、 以下のように f 機能修飾子として渡すテープデバイス名は non-rewind 指定のある方を使用してください。
example% tar xvfp /dev/rmt/0n テープからの、最初のアーカイブの読み取り tar からのメッセージ example% tar xvfp /dev/rmt/0n テープからの、次のアーカイブの読み取り tar からのメッセージ example% |
以前のリリースでは、 上記の処理が正しく動作しなかったり、 mt(1) と tar の実行との間に調整が必要になったりする場合が ありますので注意してください。 以前のリリースでの動作をエミュレートするには、 BSD 用の動作を行う b 文字を含んだ non-rewind のデバイス名を 使用してください。 詳細については mtio(7I) マニュアルページの 「 Close Operations 」の項を参照してください。
デフォルトのテープドライブ 0 に /usr/include のファイルおよび /etc のファイルを保存するためには、 次のコマンドを使用します。
example% tar c -C /usr include -C /etc . |
このコマンドによって保存された tarfile からの内容の一覧を表示すると、 たとえば次のようになります。
include/ include/a.out.h /usr/include ... の下のすべてのファイル ./chown /etc にあるその他すべてのファイル |
include の下にあるすべてのファイルを抽出するためには、次のコマンドを使用します。
example% tar xv include x include/, 0 bytes, 0 tape blocks \ include ... の下のすべてのファイル |
tar を使用して、 ネットワークを介してファイルを転送する例を示します。 最初に、ローカルマシン (example) からリモートシステム (host) 上のテープへファイルを保管する方法を示します。
example% tar cvfb - 20 files | rsh host dd of=/dev/rmt/0 obs=20b tar からのメッセージ example% |
次に、 tar を使用して、 リモートシステム上のテープから ローカルシステムへファイルを戻す例を示します。
example% rsh -n host dd if=/dev/rmt/0 bs=20b | \ tar xvBfb - 20 files tar からのメッセージ example% |
上記の例では、x キー文字を使用して tarfile からファイルの抽出を行い、v 機能修飾子により tar からの冗長出力を要求し、B 機能修飾子によりパイプから読み取りを行うように tar に指示し、 f 機能修飾子を用いて入力 tarfile の名前を指定し (– で、標準入力を指定) 、b 機能修飾子によりブロックサイズ (20) を指定しています。
次に 実際のブロック化因数を 19 にして /dev/rmt/0 上にホームディレクトリのアーカイブを作成する例を示します。
example% tar cvfb /dev/rmt/0 19 $HOME |
b 機能修飾子を使用しないでアーカイブの実際のブロック化因数を 認識するためには、 次のコマンドを使用します。
example% tar tvf /dev/rmt/0 tar: blocksize = 19 ... |
実際のブロック化因数 よりも大きい名目上のブロック化因数を使用して、 アーカイブの実際のブロック化因数を 認識するためには、 次のコマンドを使用します。
example% tar tvf /dev/rmt/0 30 tar: blocksize = 19 ... |
実際のブロック化因数に対して 小さすぎる名目上のブロック化因数を使用して、 アーカイブの実際のブロック化因数を 認識しようとした場合は次のようになります。
example% tar tvf /dev/rmt/0 10 tar: tape read error |
この環境変数は、 デフォルトの tar の動作を無効にして、 INTERACIVE UNIX システムと SCO UNIX のインストールスクリプトとの 互換性を提供するために使用します。 新しいスクリプトでは使用しないでください (互換性だけを目的とした環境変数です)。 設定した場合、次のオプションの動作が異なります。
コマンド行スイッチと対象となるファイルのリストを 獲得するために filename を使用します。
ファイルが、ボリュームにまたがって分割されないようにします。 ひとつのボリュームに十分な空きがない場合、 tar は新しくボリュームを入力するようプロンプトを出します。 ファイルが新しいボリュームに修正されない場合、 tar はエラーで終了します。
tar の実行に影響を与える環境変数 LC_CTYPE、LC_MESSAGES、LC_TIME、TZ、NLSPATH についての詳細は、 environ(5) を参照してください。
/tmp/tar*
次の属性については attributes(5) のマニュアルページを参照してください。
属性タイプ | 属性値 |
---|---|
使用条件 | SUNWcsu |
CSI | 対応済み |
インタフェースの安定性 | 安定 |
ar(1), basename(1), cd(1), chown(1), cpio(1), csh(1), dirname(1), ls(1), mt(1), pax(1), setfacl(1), umask(1), mknod(1M), vold(1M), archives(4), attributes(5), environ(5), fsattr(5), largefile(5), mtio(7I)
キー文字の誤りとテープ読み取り/書き込みエラー、 およびリンクテーブルを保持する十分なメモリーがないという 診断メッセージが出力されます。
ファイルの n 番目に現れるものをアクセスする方法がありません。
テープエラーの処理は不十分です。
ボリューム管理プログラムデーモンが実行中である場合、 従来のデバイス名 (たとえば /dev/rdiskette) でフロッピーディスクデバイスへアクセスすると 失敗する可能性があります。 詳細については vold(1M) を参照してください。
tar アーカイブ形式では アーカイブヘッダーにユーザー ID およびグループ ID を 2097151 まで格納することができます。 この値よりも大きいユーザー ID およびグループ ID を持つファイルは 60001 のユーザー ID およびグループ ID で格納されます。
アーカイブを作成するときに、 複数のロケールで実行している処理によってファイル名を作成したファイルを含んでいる場合、アーカイブの作成とアーカイブからのファイルの抽出のどちらも、フル 8 ビットコードセットを使用するロケール (たとえば、 en_US ロケール) 上で使用すべきです。
1/4 インチのアーカイブテープ用のテープドライブはバックスペースできないので、このようなテープでは -r オプションと -u オプションは使用できません。
名前 | 形式 | 機能説明 | オプション | オペランド | 使用法 | 使用例 | 環境 | 終了ステータス | ファイル | 属性 | 関連項目 | 診断 | 注意事項