tar コマンド

目的

アーカイブを操作します。

構文

X/Open Standards:

tar {-c|-r|-t|-u|-x}.[-B] [ '-d] [ '-E] [ '-F] [-h] [ '-i] [ '-l] [ '-m] [ '-o] [ '-p] [ '-s] [-U] [ '-v] [ '-w]
  • [-番号] [-f アーカイブ] [-b ブロック]
  • [-S [フィート[フィート密度[ブロック数] [-LInputList ][-XExcludeList ]
  • [-N ブロック] [-R] [-D] [-C ディレクトリー] [ -Z ] ファイル | ディレクトリー ...

Berkeley Standards:

tar { c | r | t | u | x } [ b B d D E f F h i l L X m N o p R s S U v w Z [ 0-9 ]
  • [ ブロック ] [ アーカイブ ] [ InputList ] [ ExcludeFile ]
  • [[ フィート ] | [ Feet@Density ] | [ Blocksb ]] ディレクトリー | ファイル ...

説明

注:
  1. ustar ヘッダーの書式では、無制限 (2^64 -1) のファイル・サイズが許可されています。
  2. tar コマンドは、スパースとして割り当てられたファイルのスパースの性質を保持しません。 復元前にスパース・ファイルであったファイルには、ファイルシステム内にそのファイル・サイズの全スペースが割り当てられます。

tar コマンドは、ファイルをアーカイブ・ストレージ・メディアに書き込んだり、アーカイブ・ストレージ・メディアからファイルを取り出したりすることにより、アーカイブを操作します。 tar コマンドが使用するファイルは、File パラメーターに指定します。 File パラメーターがディレクトリーを指定すると、そのディレクトリー、およびそこに入っているすべてのファイルとディレクトリーも再帰的に参照されます。

tar コマンドは、 -f Archive フラグを使用して別のデバイスを指定しない限り、デフォルト・デバイス (通常はテープ) 上でアーカイブを探します。 United States Tape Archiver (USTAR) のフォーマットに 100 文字を超えるパス名を指定する場合は、パス名が接頭部バッファー、/ (スラッシュ) 1 個、およびネーム・バッファーから構成されることに注意してください。

tar コマンドは、システム定義の PATH_MAX 制限値に達するまで path+filename の長さをサポートします。 PATH_MAX 制限値より大きい path+filename 入力のいずれの長さも保存されません。

アーカイブへ書き込む場合、tar コマンドは一時ファイル (/tmp/tar* ファイル) を使用して、数個のリンクを持つファイルのテーブルをメモリー内に保存します。 tar コマンドが一時ファイルを作成できないとき、またはリンク・テーブルを保持するのに使用可能なメモリーが足りないときは、エラー・メッセージが表示されます。

tar コマンドには、必須フラグとオプション・フラグの 2 つのフラグ・グループがあります。 必須フラグは tar コマンドの動作を制御し、-c-r-t-u-x フラグが含まれます。 tar コマンドを機能させるには、必須フラグを少なくとも 1 つは選択しなければなりません。 必須フラグを選択すれば、オプション・フラグを選択することもできますが、tar コマンドの制御には不要です。

注:
  1. ストレージ・デバイスが通常ファイルまたはブロック・スペシャル・ファイルの場合、 -u および -r はバックスペースにフラグを立てます。 しかし、ロー・テープ・デバイスはバックスペースをサポートしません。 したがって、ストレージ・デバイスがロー磁気テープの場合、 -u および -r フラグは、テープを巻き戻し、それをオープンしてから再度読み取ります。
  2. レコードは、ブロック磁気テープ上の 1 ブロックの長さですが、通常はロー磁気テープ上の高密度の半分未満です。 その結果、ブロック化されたロー・テープは 2 回読み取らなければなりませんが、テープ動作 の合計量はブロック・テープから 1 ブロック・レコードを一度読み取るときより少なくなります。
  3. ストリーミング・テープ・デバイスの構成は、テープの終わりへの情報の追加をサポートしていません。 したがって、ストレージ・デバイスがストリーミング・テープの場合、 -u および -r フラグは有効なオプションではありません。 これらのフラグを使用しようとすると、以下のエラー・メッセージが表示されます。
    tar: Update and Replace options not valid for a 
    streaming tape drive.
  4. テープ・エラーからのリカバリーはできません。
  5. IBM®磁気テープ・ユニット Model 12 へのtarコマンドのパフォーマンスは、デフォルトのブロック・サイズを変更することで改善できます。 デフォルト・ブロック・サイズを変更する場合、コマンド・ラインに次のように入力してください。
    chdev -1 <device_name> -a block_size=32k

テープ・デバイスの使用に関する詳細については、rmt スペシャル・ファイルを参照してください。

フラグ

tar コマンドのフラグには、必須フラグとオプション・フラグの 2 つのグループがあります。 tar コマンドの動作を制御するために、必須フラグを少なくとも 1 つは指定しなければなりません。

表 1. 必須フラグ
必須フラグ 説明
-c 新規アーカイブを作成し、アーカイブの始めに、1 つ以上の File パラメーターで指定したファイルを書き込みます。
-r アーカイブの終わりに、1 つ以上の File パラメーターで指定したファイルを書き込みます。 テープ・デバイスはテープの終わりへの情報の追加をサポートしていないため、このフラグはテープ・デバイスに対しては無効です。
-t ファイルがアーカイブに現れる順番にファイルをリストします。 ファイルは複数個リストすることができます。
-u 1 つ以上の File パラメーターで指定されたファイルがまだアーカイブ内にない場合、あるいはアーカイブに書き込まれた後で修正された場合に、これらのファイルをアーカイブの終わりに追加します。 テープ・デバイスはテープの終わりへの情報の追加をサポートしていないため、-u フラグはテープ・デバイスに対しては無効です。
-U 拡張属性のアーカイブと抽出を可能にします。 拡張属性にはアクセス制御リスト (ACL) も含まれます。
-x 1 つ以上の File パラメーターで指定したファイルをアーカイブから取り出します。 File パラメーターにディレクトリーを指定すると、 tar コマンドはそのディレクトリーをアーカイブから再帰的に取り出します。 File パラメーターを指定しないと、 tar コマンドはすべてのファイルをアーカイブから取り出します。 アーカイブに同じファイルの複数のコピーが入っている場合、最後に取り出したコピーがそれより前に取り出したすべてのコピーを上書きします。 取り出しているファイルがまだシステム上に存在しない場合は、そのファイルが作成されます。 ユーザーが適切な許可を持っている場合は、tar コマンドはすべてのファイルとディレクトリーを、テープでのオーナー ID またはグループ ID と同じ ID で復元します。 ユーザーに適切な許可がない場合は、ユーザーのオーナー ID またはグループ ID でファイルとディレクトリーを復元します。 最後のファイルでないファイルのオカレンスは検索できません。
表 2. オプショナル・フラグ
オプショナル・フラグ 説明
-B 1 レコード当たり 20 ブロックの入出力ブロッキングを強制します。 このオプションによって、tar コマンドはブロッキングが維持されない通信チャネルについても機能します。
-b Blocks 1 レコード当たり 512 バイト・ブロック数を指定します。 デフォルトと最大値は 20 で、テープ・レコードには適切です。 レコード間ギャップのサイズのために、大ブロック化因数で書き込まれるテープは、1 レコード当たり 1 ブロックのテープに比べて大量のデータを保存できます。

ブロック・サイズは、テープが読み取られるときに自動的に決定されます ( -x または -t 関数フラグ)。 -u 関数および -r 関数を使用してアーカイブを更新すると、既存のレコード・サイズが使用されます。 tar コマンドは、-c フラグを使用して新規アーカイブを作成する場合にのみ、指定された値の Blocks パラメーターを使用してアーカイブを書き込みます。

-f フラグを使用して通常のファイルに出力する場合は、ディスク・ブロックのサイズに一致するブロック化因数を使用することにより、ディスク・スペースを節約することができます。例えば、 -b4 フラグ (2048 バイトのディスク・ブロックの場合)。

-C ディレクトリー tar コマンドが Directory 変数で指定されたディレクトリーに対して chdir サブルーチンを実行します。 -C フラグを使用すると、複数のディレクトリーが共通の親によって 関連付けられていなくても、短縮相対パス名を使用してアーカイブすることができます。 例えば、/usr/include ディレクトリーと /etc ディレクトリーからファイルをアーカイブするには、以下のコマンドを使用します。
tar c -C /usr/include File1 File2 -C /etc File3 File4

アーカイブからファイルを抽出するときは、複数の -C オプションを指定できます。 複数の -C オプションを使用する場合、-C Directory の各インスタンスは、コマンドでそのインスタンスの直前にリストされているインスタンスに対して相対的になります。 例えば、2 番目の -C Directory は最初の -C Directory に対して相対的になります。

絶対パス名 (例えば /home/dir1/filename) を持つファイルがアーカイブに含まれている場合、そのファイルは、ファイル・パスまたはファイル名から先行スラッシュ (/) を除去して、-C Directory で指定されたディレクトリーに抽出されます。

-C Directory フラグは、他のすべてのフラグの後に指定する必要があり、指定されたファイル名のリストに表示できます。

-D ディレクトリーを指定する際に再帰的処理を抑制します。
-d ブロック・ファイル、特殊文字ファイル、先入れ先出し (FIFO) パイプ・プロセスに対して別々のエントリーを作成します。 通常、tar コマンドはこのようなスペシャル・ファイルをアーカイブしません。 -d フラグを指定してアーカイブに書き込むと、 tar コマンドは、 -x フラグを使用して、空のディレクトリー、スペシャル・ファイル、および先入れ先出し法 (FIFO) パイプ・プロセスを復元することができます。
制約事項: 誰でも特殊ファイルをアーカイブできますが、アーカイブから抽出できるのは、root ユーザー権限を持つユーザーのみです (FIFO は非 root ユーザーによって抽出することもできます)。
-E 新しいアーカイブまたは既存のアーカイブにファイルを追加するときに、長いユーザー名およびグループ名の切り捨てを回避します。
-F アーカイブする前にファイル・タイプを検査します。 ソース・コード制御システム (SCCS)、リビジョン・コントロール・システム (RCS)、coreerrsa.out の名前を持つファイルおよび .o (ドット o) で終わるファイルはアーカイブされません。
-f Archive Archive 変数に、読み取りまたは書き込み対象のアーカイブを指定します。 このフラグが指定されないと、 tar コマンドは /dev/rmt0 形式のシステム依存デフォルト・ファイル名を使用します。 指定された Archive 変数が - (負符号 (-)) であれば、 tar コマンドは標準出力に書き出すか、 または標準入力から読み込みます。 標準出力に書き込む場合は、 -c フラグを使用する必要があります。
-h シンボリック・リンクが通常のファイルかディレクトリーであるかのように、シンボリック・リンクに従うことを tar コマンドに強制します。 通常は、 tar コマンドはシンボリック・リンクに従いません。
-i ヘッダーのチェックサム・エラーを無視します。 tar コマンドは、アーカイブの各ファイルに対してチェックサムを含むファイル・ヘッダーを書き込みます。 このフラグを指定しないと、システムはチェックサムを再計算することによってヘッダー・ブロックの内容を検証し、不一致が生じるとディレクトリーのチェックサム・エラーで終了します。 このフラグを指定すると、 tar コマンドはエラーをログに記録し、有効なヘッダー・ブロックが見つかるまで順方向にスキャンします。 これは、マルチボリューム・アーカイブの初めの部分のボリュームを読み取ることなく、後の部分のボリュームからファイルを復元できるようにします。
-L InputList -L オプションの Inputlist 引数は、常に、アーカイブまたは抽出する必要があるファイルおよびディレクトリーをリストするファイルの名前でなければなりません。
-l リンク・カウントが 1 よりも大きいファイルのうち、それに対応するリンクもアーカイブされていないファイルごとに、エラー・メッセージを標準出力に書き出します。 例えば、file1file2 がハード・リンクされており、file1 のみがアーカイブに入っている場合、-l フラグがエラー・メッセージを出します。 -l フラグを指定しなければ、エラー・メッセージは表示されません。
-m 抽出したときの時間を修正時間として使用します。 デフォルトはファイルの修正時間を保存することです。
-N ブロック tar コマンドがストリーミング・テープ・アーカイブを処理する場合に大きなブロックのクラスターを使用できるようにします。 しかし、入力時には、 tar コマンドはこのフラグにより作成された大変長いブロック・サイズを持つテープのブロック・サイズを自動的に判別できないことに注意してください。 -N Blocks フラグが指定されていない場合に、tar コマンドが自動的に決めることのできる最大のブロック・サイズは 20 ブロックです。
-o 旧バージョン(AIX®®)のtarコマンドとの後方互換性を提供します。 このフラグを読み取りに使用すると、取り出されたファイルには、アーカイブのユーザー ID とグループ ID (UID と GID) ではなく、プログラムを実行したユーザーの UID と GID が含まれます。 これは、正規ユーザー向けのデフォルトの動作です。
-p 現在の umask を無視して、フィールドを元のモードに復元します。 setuidsetgid、および tacky ビット許可も、root ユーザー権限のあるユーザーに対して復元されます。 このフラグはファイルおよびディレクトリーを元のモードに復元します。
-R ディレクトリーを指定する際に再帰を使用します。 -D オプションと一緒に使用すると無視されます。
-s tar コマンドが、-s フラグを使用して 2 つのファイルをリンク (通常リンク) しようとして失敗した場合に、シンボリック・リンクの作成を試行します。
-S Blocks b-S Feet-S フィート@密度 テープ・ブロック化因数と関係なく、1 ボリューム当たり 512KB (第 1 書式) の数を指定します。 また、第 2 書式を使用してテープ・サイズをフィート単位で指定することもできます。この場合、tar コマンドは Density 変数をデフォルト値であると見なします。 第 3 書式によって、テープ長と密度を指定できます。 フィートは控え目に見て 11 インチと見なされます。 このフラグを使用すると、tar コマンドが各ボリュームに適合するブロックの数を判別できる場合に、簡単にマルチボリュームのテープのアーカイブを処理できます。
注:
  1. テープ・ドライブは密度処理能力が異なります。 Density 変数はシステムのテープに適したデータ量を計算します。
  2. 1/4 インチのテープ・デバイスを使用する場合は、 デバイスのトラック数を考慮に入れて Feet 変数の値を指定しなければなりません。 例えば、600 フィートのテープが含まれる、密度が 8000 bpi の 4 トラック、1/4 インチのテープ・ドライブは、次のように、-S Feet@Density フラグを使用して指定できます。
    -S 2400@8000
    この場合、600 フィートに 4 トラックを掛けると 2400 フィートに なります。
-U 指定された拡張属性および ACL をアーカイブまたはリストアします。 リストする場合、このオプションは、指定された拡張属性の名前と、各ファイルに関連付けられてアーカイブ・イメージの一部となっている ACL のタイプを、すべて表示します。
-v 処理される各ファイルの名前をリストします。 -t フラグを指定すると、 -v は、ファイル・サイズ、最終変更時刻、ユーザー番号 (UID)、グループ番号 (GID)、および許可など、テープ項目に関する詳細情報を提供します。
-w 予定されているアクションの後にファイル名を付けて表示し、ユーザー確認を待ちます。 応答が肯定であれば、アクションが実行されます。 応答が肯定でなければ、そのファイルは無視されます。
-数値 デフォルトの代わりに /dev/rmtNumber ファイルを使用します。 例えば、-2 フラグは、-f/dev/rmt2 ファイルと同じです。
-X ExcludeList 作成、抽出、またはリストされる tar アーカイブから、ExcludeList にリストされたファイル名またはディレクトリーを除外します。 ExcludeList には、作成、抽出、またはリストされる tar アーカイブから除外されるファイル名またはディレクトリーを、1 行に 1 つだけ入れます。 -X オプションは複数回指定でき、他のすべてのオプションよりも優先されます。
-Z 暗号化ファイルまたはディレクトリーの暗号化ファイルシステム (EFS) 情報をアーカイブします。 デフォルトでは EFS 情報が取り出されます。 -t および -v フラグを -Z フラグとともに指定すると、-Z ラグによってアーカイブされた暗号化ファイルおよびディレクトリーのファイル・モードの後に e 標識が表示され、その他のフィルのファイル・モードの後にはハイフン (-) が表示されます。
制約事項: -Z フラグを使用して作成されたアーカイブは、 AIX 6.1 以降のリリースでのみ復元できます。

終了状況

このコマンドは、以下の終了値を戻します。

項目 説明
0 正常終了。
>0 エラーが発生しました。

セキュリティー

RBACユーザーおよびTrustedAIXユーザーに注意:このコマンドは特権操作を実行できます。 特権命令を実行できるのは特権ユーザーのみです。 権限と特権の詳細については、セキュリティの特権コマンドデータベースを参照してください。 このコマンドに関連した特権および権限のリストについては、lssecattr コマンドまたは getcmdattr サブコマンドの項を参照してください。

  1. 以下を記述します。file1および file2ファイルをデフォルトの磁気テープ・ドライブ上の新規アーカイブに追加するには、次のように入力します。
    tar -c file1 file2
  2. ファイル内のすべてのファイルを抽出するには、 /tmp上のアーカイブ・ファイルからのディレクトリー/dev/rmt2テープ装置を使用し、抽出の時刻を変更時刻として使用するには、次のように入力します。
    tar -xm -f/dev/rmt2 /tmp
  3. 以下を含む新規アーカイブ・ファイルを作成します。file1アーカイブ・ファイルを dd コマンドに渡して、ファイルに書き込みます。/dev/rmt1以下のように入力します。
    tar -cvf - file1 | dd of=/dev/rmt1 conv=sync
  4. ファイルの名前を表示するには、以下のようにします。out.tar現行ディレクトリーのディスク・アーカイブ・ファイルの場合は、次のように入力します。
    tar -vtf out.tar
  5. 圧縮された tar アーカイブ・ファイルを解凍するには、以下のようにします。fil.tar.ztar コマンドにファイルを渡し、展開された tar アーカイブ・ファイルからすべてのファイルを抽出します。次のように入力します。
    zcat fil.tar.Z | tar -xvf -
  6. 以下の内容をアーカイブします。/usr/includeおよび/usr/bin短い相対パス名を使用するファイルは、次のように入力します。
    cd /usr
    tar -cvf/dev/rmt0 -C./include . -C ../bin .
    要件:相対パス名で -Cフラグを複数回指定する場合、ユーザーは前の-Cフラグ要求を考慮しなければならない。
  7. -S フラグを使用して 8 ミリ・デバイスにアーカイブするには、次のように入力します。
    tar -cvf /dev/rmt0 -S 4800000b /usr
    制約事項: 8 mm 装置はテープへの書き込み時に密度の概念を使用しないため、8 mm 装置にアーカイブする場合は、 -S (S) フィート および -S (S) フィート@密度 フラグを使用しないでください。
  8. すべてのリストをアーカイブするにはC-L オプションの InputList 引数によってファイルにリストされるファイルの場合は、次のように入力します。
    tar -cvf fl.tar -L fl_list
    各項の説明は次のとおりです。fl_listすべてのリストで構成されるファイルです。.cファイルが含まれています。 これは以下のようにして取得できます。
    ls *.c > fl_list
  9. すべてのリストをアーカイブするにはC-L オプションを使用して変数を設定することによってファイルを作成するには、次のように入力します。
    ls *.c > fl_list
    fl=fl_list
    tar -cvf var.tar -L $fl
  10. アーカイブの作成時に長いユーザー名およびグループ名の切り捨てを回避するには、次のように入力します。
    tar -cvEf file.tar file
  11. file1 ファイルと ACL および EA の入った新しいアーカイブ・ファイルを作成するには、次のように入力します。
    tar -cvUf /tmp/tar.ar file1 
    

バークレー・オプション

tar コマンドを使用するバークレー・オプションの例を次に示します。

ヒント: バークレー・オプションを使用する場合、フラグに対する引数は、以下に示すフラグの正確な順序で指定する必要があります。 次に例を示します。
tar cvfbL test.tar 20 infile
ここで、test.tar はアーカイブ tar ファイル、20 はブロック数、infile はこのアーカイブの Inputlist です。
  1. すべてのディレクトリーと、入力リスト・ファイル infile にリストされている完全なファイル名を ar.tarにアーカイブするには、次のように入力します。
    tar cvfL ar.tar infile
    ここで、 infile には、アーカイブされるファイルのパス名が含まれます。
  2. 入力リスト・ファイル infile にリストされているディレクトリー内のファイルを ar.tarにアーカイブするには、次のように入力します。
    tar cvRfL ar.tar infile
  3. ar.tarという名前のアーカイブから、入力リスト・ファイル infile に指定されたディレクトリーおよび完全なファイルを抽出するには、次のように入力します。
    tar xvfL ar.tar infile
  4. ディレクトリー内からファイルを抽出し、入力リスト・ファイル infile で指定されたファイルを ar.tarという名前のアーカイブから完成させるには、次のように入力します。
    tar xvRfL ar.tar infile

ファイル

項目 説明
/dev/rmt0 デフォルトのテープ・デバイスを指定します。
/bin/tar tar コマンドへのシンボリック・リンクを指定します。
/usr/bin/tar tar コマンドが入っています。
/tmp/tar* 一時ファイルを指定します。
ヒント: AIX 3.2では、 /bin ディレクトリー全体が /usr/binへのシンボリック・リンクです。