tar コマンド

目的

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

構文

X/Open 標準:

tar {-c| -r|-t| -u|-x} [ -B] [ -d ] [ -E ] [ -F ] [ -h ] [ -i ] [ -l ] [ -m ] [ -o ] [ -p ] [ -s ] [ -U ] [ -v ] [ -w]
  • [-Number] [-f Archive ] [-b Blocks]
  • [-S [Feet] [Feet @Density ] [Blocksb]] [-L InputList ] [-X ExcludeList]
  • [-N Blocks] [ -R] [-D] [ -C Directory] [ -Z ] File | Directory ...

バークレー標準:

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 ] ]
  • [ Blocks ] [ Archive ] [ InputList ] [ ExcludeFile ]
  • [ [ Feet ] | [ Feet@Density ] | [ Blocksb ] ] Directory | File ...

説明

注:
  1. AIX® 7.1 (テクノロジー・レベル 2) 以前のリリースでは、ustar ヘッダー書式で最大 8 GB のファイル・サイズを指定できます。 AIX 7.1 (テクノロジー・レベル 3) 以降のリリースでは、このサイズは無制限 (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® 9348 磁気テープ装置モデル 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 コマンドはブロッキングが維持されない通信チャネルについても機能します。
-bBlocks 1 レコード当たり 512 バイト・ブロック数を指定します。デフォルトと最大値は 20 で、テープ・レコードには適切です。レコード間ギャップのサイズのために、大ブロック化因数で書き込まれるテープは、1 レコード当たり 1 ブロックのテープに比べて大量のデータを保存できます。

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

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

-C Directory これにより、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 Blocks tar コマンドがストリーミング・テープ・アーカイブを処理する場合に大きなブロックのクラスターを使用できるようにします。しかし、入力時には、 tar コマンドはこのフラグにより作成された大変長いブロック・サイズを持つテープのブロック・サイズを自動的に判別できないことに注意してください。 -N Blocks フラグが指定されていない場合に、tar コマンドが自動的に決めることのできる最大のブロック・サイズは 20 ブロックです。
-o tar コマンドの旧バージョン (非 AIX) との下位互換性を提供します。 このフラグを読み取りに使用すると、取り出されたファイルには、アーカイブのユーザー ID とグループ ID (UID と GID) ではなく、プログラムを実行したユーザーの UID と GID が含まれます。これは、正規ユーザー向けのデフォルトの動作です。
-p 現在の umask を無視して、フィールドを元のモードに復元します。 setuidsetgid、および tacky ビット許可も、root ユーザー権限のあるユーザーに対して復元されます。 このフラグはファイルおよびディレクトリーを元のモードに復元します。
-R ディレクトリーを指定する際に再帰を使用します。 -D オプションと併用されたときは無視されます。
-s tar コマンドで -s フラグを使用して 2 つのファイルをリンク (通常のリンク) する処理が異常終了したとき、tar コマンドは、シンボリック・リンクを作成しようとします。
-S Blocks b, -S Feet, -S Feet@Density テープ・ブロック化因数と関係なく、1 ボリューム当たり 512KB (第 1 書式) の数を指定します。また、第 2 書式を使用してテープ・サイズをフィート単位で指定することもできます。この場合、tar コマンドは Density 変数をデフォルト値であると見なします。第 3 書式によって、テープ長と密度を指定できます。フィートは控え目に見て 11 インチと見なされます。このフラグを使用すると、tar コマンドが各ボリュームに適合するブロックの数を判別できる場合に、簡単にマルチボリュームのテープのアーカイブを処理できます。
注:
  1. テープ・ドライブは密度処理能力が異なります。Density 変数はシステムのテープに適したデータ量を計算します。
  2. 1/4 インチのテープ・デバイスを使用する場合は、 デバイスのトラック数を考慮に入れて Feet 変数の値を指定しなければなりません。 例えば、 4 トラック、1/4 インチのテープ・ドライバーでテープ長が 600 フィート、密度が 8000 ビット/インチである場合は、-SFeet@Density フラグを使用して、 以下のように変数値を指定することができます。
    -S 2400@8000
    この場合、600 フィートに 4 トラックを掛けると 2400 フィートに なります。
-U 指定された拡張属性および ACL をアーカイブまたはリストアします。 リストする場合、このオプションは、指定された拡張属性の名前と、各ファイルに関連付けられてアーカイブ・イメージの一部となっている ACL のタイプを、すべて表示します。
-v 処理される各ファイルの名前をリストします。 -t フラグを指定すると、 -v には、ファイル・サイズ、 最終修正の回数、ユーザー番号 (UID)、グループ番号 (GID)、 許可などのテープ・エントリーについての情報が含まれます。
-w 予定されているアクションの後にファイル名を付けて表示し、ユーザー確認を待ちます。応答が肯定であれば、アクションが実行されます。応答が肯定でなければ、そのファイルは無視されます。
-Number デフォルトの代わりに /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 ユーザーおよび Trusted AIX ユーザーへの注意: このコマンドは特権命令を実行できます。 特権命令を実行できるのは特権ユーザーのみです。 権限および特権についての詳細情報は、「セキュリティー 」の『特権コマンド・データベース』を参照してください。 このコマンドに関連した特権および権限のリストについては、lssecattr コマンドまたは getcmdattr サブコマンドの項を参照してください。

  1. file1 ファイルおよび file2 ファイルをデフォルト・テープ・ドライブ上の新しいアーカイブに書き込むには、次のように入力します。
    tar -c file1 file2
  2. /dev/rmt2 テープ・デバイス上のアーカイブ・ファイルから /tmp ディレクトリーのすべてのファイルを取り出し、そのときの時間を修正時間として使用するには、以下のように入力します。
    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.z を展開し、tar コマンドに渡し、展開された 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 Feet および -S Feet @Density フラグの使用は避けてください。
  8. -L オプションの InputList 引数でファイルにリストされる、すべての C ファイルのリストをアーカイブするには、以下を入力します。
    tar -cvf fl.tar -L fl_list
    ここで fl_list は、 すべての .c ファイルのリストを含んでいるファイルです。 これは以下のようにして取得できます。
    ls *.c > fl_list
  9. -L オプションを使用する変数を設定して、すべての C ファイルのリストをアーカイブするには、以下を入力します。
    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. 入力リスト・ファイル infile で指定されたディレクトリーおよび完全なファイルを、ar.tar という名前のアーカイブから抽出するには、次のように入力します。
    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 へのシンボリック・リンクです。