Go to main content

マニュアルページ セクション 1: ユーザーコマンド

印刷ビューの終了

更新: 2018年8月8日
 
 

pax(1)

名前

pax - 移植可能なアーカイブの交換

形式

pax [-cdnv] [-H | -L] [-f archive] [-o options]... 
     [-s replstr]... [pattern]...
pax -r [-cdiknuv@/] [-H | -L] [-f archive] [-o options]... 
     [-p string]... [-s replstr]... [pattern]...
pax -w [-dituvX@/] [-H | -L] [-b blocksize] [-a] 
     [-f archive] [-o options]... [-s replstr]... 
     [-x format] [file]...
pax -r -w [-diklntuvX@/] [-H | -L] [-o options]... 
     [-p string]... [-s replstr]... [file]... directory

説明

pax は、アーカイブファイルの読み取りと書き込み、そのメンバーのリストの書き込み、およびディレクトリ階層のコピーをします。さまざまなアーカイブ形式がサポートされています。–x format オプションを参照してください。

操作のモード

実行されるアクションは、–r オプションと –w オプションが存在するかどうかによって異なります。–r–w の 4 つの組み合わせは、listreadwrite、および copy モードの 4 つの操作モードと呼ばれ、それぞれ「形式」に示されている 4 つの形式に対応します。

list

list モードでは、つまり –r–w のどちらも指定されていない場合、pax は、標準入力から読み取られた、指定されたパターンに一致するパス名を持つアーカイブファイルのメンバーの名前を標準出力に書き込みます。指定されたファイルに拡張属性がある場合は、その拡張属性も表示されます。指定されたファイルのタイプがディレクトリである場合は、そのファイルをルートとするファイル階層も表示されます。

read

read モードでは、つまり –r が指定されているが、–w は指定されていない場合、pax は、標準入力から読み取られた、指定されたパターンに一致するパス名を持つアーカイブファイルのメンバーを抽出します。抽出されたファイルのタイプがディレクトリである場合は、そのファイルをルートとするファイル階層も抽出されます。抽出されたファイルは、pax が起動されたディレクトリを現在の作業ディレクトリとしてパス名の解決を実行することによって作成されます。

ディレクトリがすでに存在するときにそのディレクトリを抽出しようとした場合、これはエラーとは見なされません。FIFO がすでに存在するときにその FIFO を抽出しようとした場合、これはエラーとは見なされません。

復元されたファイルの所有権、アクセス時間と変更時間、およびファイルモードについては、–p オプションのセクションで説明します。

write

write モードでは、つまり –w が指定されているが、–r は指定されていない場合、pax は、file オペランドの内容をアーカイブ形式で標準出力に書き込みます。file オペランドが指定されていない場合は、コピーするファイルのリスト (1 行に 1 つのファイル) が標準入力から読み取られます。ディレクトリタイプのファイルには、そのファイルをルートとするファイル階層内のすべてのファイルが含まれています。

copy

copy モードでは、つまり –r–w の両方が指定されている場合、pax は、file オペランドを宛先ディレクトリにコピーします。

file オペランドが指定されていない場合は、コピーするファイルのリスト (1 行に 1 つのファイル) が標準入力から読み取られます。ディレクトリタイプのファイルには、そのファイルをルートとするファイル階層内のすべてのファイルが含まれています。

copy の効果は、コピーされたファイルがアーカイブファイルに書き込まれ、そのあとに抽出された場合と同じになります。ただし、元のファイルとコピーされたファイルの間にハードリンクが存在できる点が異なります。宛先ディレクトリが、コピーされるいずれかのファイルのサブディレクトリである場合、結果は不確定です。directory が存在しないか、ユーザーから書き込めないか、またはディレクトリでない場合は、いずれもエラーになります。

read または copy モードでは、アーカイブメンバーを抽出するために中間ディレクトリが必要な場合、pax は、次の引数で呼び出された mkdir(2) 関数と同等のアクションを実行します。

  • path 引数として使用される中間ディレクトリ。

  • mode 引数としての 777 または rwx (読み取り権、書き込み権、およびアクセス権) の 8 進数値 (chmod(1) を参照)。

指定されたいずれかの pattern または file オペランドが少なくとも 1 つのファイルまたはアーカイブメンバーに一致しない場合、pax は、一致しなかったオペランドごとに診断メッセージを標準エラーに書き込み、0 以外の終了ステータスで終了します。

サポートされているアーカイブ形式は、自動的に入力で検出されます。デフォルトの出力アーカイブ形式は、tar(1) です。

1 つのアーカイブが複数のファイルにまたがることができます。pax は、次のファイルとしてどのファイルに対して読み取りまたは書き込みを行うかを判定します。

選択されたアーカイブ形式がリンクされたファイルの仕様をサポートしている場合、リンクされるファイルがシンボリックリンクであり、かつシステムがシンボリックリンクへのハードリンクを作成できない場合を除き、アーカイブを抽出したときにこれらのファイルをリンクできない場合はエラーになります。その場合は、シンボリックリンクの別のコピーが代わりに作成されます。抽出のためのファイルの選択には、そのファイルを表すアーカイブ内のさまざまな名前のいずれを使用することもできます。ファイルの内容が、ハードリンクが生成される原因となる各名前とともに格納されないアーカイブ形式では、そのデータを含むファイルがこの pax セッション中に抽出されない場合、元のファイルからデータが復元されるか、またはデータを抽出するために使用できるファイルの名前を含む診断メッセージが表示されます。ディレクトリをたどっているとき、pax は無限ループ、つまり、最後にアクセスしたファイルの祖先である、前にアクセスしたディレクトリに入ったことを検出します。無限ループを検出すると、pax は診断メッセージを標準エラーに書き込み、終了します。

オプション

サポートしているオプションは、次のとおりです。

–a

アーカイブの最後にファイルを追加します。このオプションは、1/4 インチのストリームテープや 8mm テープなどの一部のアーカイブデバイスでは機能しません。

–b blocksize

アーカイブファイルへの 1 回の書き込みあたり正の 10 進整数のバイト数で出力をブロック化します。デバイスやアーカイブ形式によってブロック化に制限を課すことができます。ブロック化は、入力に対して自動的に決定されます。移植性のあるアプリケーションは、32256 より大きな blocksize 値を指定してはいけません。アーカイブを作成するときのデフォルトのブロック化は、アーカイブ形式によって異なります。下記の –x オプションを参照してください。

–c

pattern または file オペランドによって指定されたものを除くすべてのファイルまたはアーカイブメンバーを照合します。

–d

そのファイルをルートとするファイル階層ではなく、そのファイルまたはアーカイブメンバー自体だけに一致するディレクトリタイプのファイルのコピーやアーカイブ、またはディレクトリタイプのアーカイブメンバーの抽出または表示が行われるようにします。

–f archive

入力または出力アーカイブのパス名を指定して、デフォルトの標準入力 (list または read モード) または標準出力 (write モード) をオーバーライドします。

–H

ディレクトリタイプのファイルを参照しているシンボリックリンクがコマンド行で指定されている場合、pax は、そのリンクの名前をファイル階層のルートとして使用して、そのリンクによって参照されているファイルをルートとするファイル階層をアーカイブします。それ以外で、pax が通常アーカイブできるほかのいずれかのファイルタイプのファイルを参照しているシンボリックリンクがコマンド行で指定されている場合、pax は、そのリンクの名前を使用して、そのリンクによって参照されているファイルをアーカイブします。デフォルトの動作では、そのシンボリックリンク自体をアーカイブします。

–i

ファイルまたはアーカイブメンバーの名前を対話形式で変更します。pattern オペランドに一致するアーカイブメンバー、または file オペランドに一致するファイルごとに、プロンプトがファイル /dev/tty に書き込まれます。そのプロンプトには、ファイルまたはアーカイブメンバーの名前が含まれています。次に、/dev/tty から行が読み取られます。この行が空白である場合、ファイルまたはアーカイブメンバーはスキップされます。この行が 1 つのピリオドで構成されている場合、ファイルまたはアーカイブメンバーは、その名前を変更せずに処理されます。それ以外の場合、その名前は、その行の内容で置き換えられます。応答を読み取っているときにファイルの終わりが検出された場合や、読み取りや書き込みのために /dev/tty を開けない場合、pax は、0 以外の終了ステータスでただちに終了します。

抽出中に名前が変更されたファイルへのハードリンクを抽出した結果は不確定です。

–k

既存のファイルを上書きできないようにします。

–l

ファイルをリンクします。copy モードでは、可能な場合は常に、ソースと宛先のファイル階層の間にハードリンクが作成されます。–H または –L とともに指定された場合は、シンボリックリンクが検出されたとき、宛先のファイル階層内に作成されたハードリンクはそのシンボリックリンクによって参照されているファイルに対するものです。–H–L のどちらも指定されずに指定された場合は、シンボリックリンクが検出されたとき、そのシンボリックリンクへのハードリンクがソースのファイル階層内に作成されるか、またはそのシンボリックリンクが宛先にコピーされます。

–L

ディレクトリタイプのファイルを参照しているシンボリックリンクがコマンド行で指定されているか、またはファイル階層の検索中に検出された場合、pax は、そのリンクの名前をファイル階層のルートとして使用して、そのリンクによって参照されているファイルをルートとするファイル階層をアーカイブします。それ以外で、pax が通常アーカイブできるほかのいずれかのファイルタイプのファイルを参照しているシンボリックリンクがコマンド行で指定されているか、またはファイル階層の検索中に検出された場合、pax は、そのリンクの名前を使用して、そのリンクによって参照されているファイルをアーカイブします。デフォルトの動作では、そのシンボリックリンク自体をアーカイブします。

–n

pattern オペランドに一致する最初のアーカイブメンバーを選択します。そのファイルをルートとするファイル階層にディレクトリタイプのメンバーが引き続き一致している場合でも、パターンごとに一致するアーカイブメンバーは 1 つだけです。

–o options

ファイルの抽出または書き込みのアルゴリズムを変更するための情報を実装に提供します。オプションの値は、次の形式のコンマで区切られた 1 つ以上のキーワードで構成されます。

keyword[[:]=value][,keyword[[:]=value], ...]

各説明で示されているように、一部のキーワードは特定のファイル形式にのみ適用されます。処理されているファイル形式に適用できないキーワードを使用すると、結果は未定義となります。

options 引数内のキーワードは、有効な移植可能なファイル名になる文字列である必要があります。

キーワードはファイル名であると想定されているわけではなく、単に、移植可能なファイル名と同じ文字構成規則に従っているだけです。

キーワードの前にスペースを置くことができます。value フィールドは、0 個以上の文字で構成されます。value 内で、アプリケーションは、すべてのコンマの前にバックスラッシュを付加します。このバックスラッシュは無視されますが、コンマは value の一部として保持されます。options 内の最後の文字としてのコンマや、そのあとに最後の文字としてスペースだけが付加されたコンマは無視されます。複数の –o オプションを指定できます。これらの複数の –o オプションに指定されているキーワードが競合が競合する場合は、コマンド行シーケンス内であとに現れたキーワードと値が優先され、前にあるキーワードと値は警告なしで無視されます。示されているファイル形式に対して、options の次のキーワード値がサポートされます。

delete=pattern

このキーワードは、–x pax 形式にのみ適用可能です。write または copy モードで使用された場合、pax は、生成する拡張ヘッダーレコードからその文字列パターンに一致するすべてのキーワードを省略します。read または list モードで使用された場合、pax は、拡張ヘッダーレコード内のその文字列パターンに一致するすべてのキーワードを無視します。どちらの場合も、照合はパターンマッチング表記法を使用して実行されます。例:

-o delete=security.*

セキュリティー関連の情報が抑制されます。

–o delete=pattern オプションが複数指定されている場合、これらのパターンは付加的に処理されます。pax が生成する拡張ヘッダーレコードから、指定された文字列パターンに一致するすべてのキーワードが省略されます。

exthdr.name=string

このキーワードは、–x pax 形式にのみ適用可能です。このキーワードは、拡張ヘッダーの ustar ヘッダーブロックに書き込まれる名前をユーザーが制御できるようにします。この名前は、次の文字置換が作成されたあとの string の内容です。

%d

ファイルのディレクトリ名。これは、変換されたパス名に対する dirname ユーティリティーの結果と同じです。

%f

ファイルのファイル名。これは、変換されたパス名に対する basename ユーティリティーの結果と同じです。

%p

pax プロセスのプロセス ID。

%%

「%」文字。

string 内にこれ以外の「%」文字を指定すると、結果は未定義となります。

–o exthdr.name=string が指定されていない場合、pax は次のデフォルト値を使用します。

%d/PaxHeaders.%p/%f
globexthdr.name=string

このキーワードは、–x pax 形式にのみ適用可能です。write または copy モードで適切なオプションとともに使用された場合、pax は、以前のバージョンの pax では通常ファイルとして扱われる ustar ヘッダーブロックを含むグローバル拡張ヘッダーレコードを作成します。このキーワードは、グローバル拡張ヘッダーレコードの ustar ヘッダーブロックに書き込まれる名前をユーザーが制御できるようにします。この名前は、次の文字置換が作成されたあとの string の内容です。

%n

アーカイブ内のグローバル拡張ヘッダーレコードのシーケンス番数を表す整数。1 から始まります。

%p

pax プロセスのプロセス ID。

%%

「%」文字。

string 内にこれ以外の「%」文字を指定すると、結果は未定義となります。

–o globexthdr.name=string が指定されていない場合、pax は次のデフォルト値を使用します。

$TMPDIR/GlobalHead.%p.%n

ここで、$TMPDIR は TMPDIR 環境変数の値を表します。TMPDIR が設定されていない場合、pax/tmp を使用します。

invalid=action

このキーワードは、–x pax 形式にのみ適用可能です。このキーワードは、read または copy モードでは宛先の階層で無効な値、list モードでは実装のコードセットや現在のロケールに書き込めない値を拡張ヘッダーレコード内に検出したときに pax が実行するアクションをユーザーが制御できるようにします。pax によって認識される無効な値を次に示します。

  • read または copy モードでは、宛先の階層で無効な文字エンコーディングを含むファイル名またはリンク名。たとえば、名前には NUL を埋め込むことができます。

  • read または copy モードでは、パス名コンポーネントまたはパス名全体のどちらかについて、宛先の階層で許可される最大長より長いファイル名またはリンク名。

  • list モードでは、実装のコードセットや現在のロケールに書き込めないすべての文字列値 (ファイル名、リンク名、ユーザー名など)。

action 引数の次の相互排他的な値がサポートされています。

binary

書き込みモードでは、pax は、拡張ヘッダーレコード内に UTF-8 コードセットに変換できないファイル名、リンク名、グループ名、所有者名、またはその他のいずれかのフィールドを含む各ファイルに対して hdrcharset=BINARY 拡張ヘッダーレコードを生成し、エンコードされていない拡張ヘッダーレコード値を含むファイルをアーカイブに含めることができるようにします。読み取りまたはコピーモードでは、これにより既存のファイルが有効な名前で上書きされる可能性があるかどうかには関係なく、pax はヘッダーで指定された値を変換なしで使用します。list モードでは、paxbypass アクションと同様に動作します。

bypass

read または copy モードでは、pax がファイルをバイパスするため、宛先の階層は変更されません。list モードでは、pax がファイルのリクエストされたすべての有効な値を書き込みますが、無効な値を書き込む方法は不確定です。

rename

read または copy モードでは、pax がファイル名またはリンク名の無効な値を含む各ファイルに対して –i オプションが有効であるかのように動作するため、ユーザーは対話形式で置換名を指定できます。list モードでは、paxbypass アクションと同様に動作します。

UTF-8

読み取り、コピー、またはリストモードで使用され、かつ拡張ヘッダーレコード内のファイル名、リンク名、所有者名、またはその他のいずれかのフィールドを pax UTF-8 コードセット形式から実装のコードセットや現在のロケールに変換できない場合、pax はその名前の実際の UTF-8 エンコーディングを使用します。このファイルに対して hdrcharset 拡張ヘッダーレコードが有効な場合は、そのレコードによって指定された文字セットが UTF-8 の代わりに使用されます。このファイルに対して hdrcharset=BINARY 拡張ヘッダーレコードが有効な場合、変換は実行されません。

write

read または copy モードでは、これによって有効な名前を持つ既存のファイルが上書きされるかどうかには関係なく、pax はファイルを書き込んで名前を変換します。list モードでは、paxbypass アクションと同様に動作します。

–o invalid= オプションが指定されていない場合、pax は、–o invalid=bypass が指定されているかのように動作します。–o invalid= action で許可できる既存のファイルの上書きはすべて、アクセス権 (–p) と変更時間 (–u) の制限に従い、–k オプションも指定されている場合は抑制されます。

linkdata

このキーワードは、–x pax 形式にのみ適用可能です。write モードでは、あるファイルが単に内容がすでにアーカイブに書き込まれているファイルへのハードリンクである場合でも、pax はそのファイルの内容をアーカイブに書き込みます。

listopt=format

このキーワードは、list モードで –v オプションが指定されているときに生成された内容リストの出力形式を指定します。(下記の「モードの形式指定の一覧表示」を参照)。あいまいさを避けるために、listopt=format は、–o オプション引数内の唯一または最後の keyword=value ペアです。オプション引数の残りの部分にある文字はすべて、形式文字列の一部であると見なされます。–o listopt=format オプションが複数指定されている場合、形式文字列は、コマンド行の順序で評価される連結された 1 つの文字列であると見なされます。

times

このキーワードは、–x pax および –x xustar 形式にのみ適用可能です。write または copy モードで使用された場合、pax は、ファイルごとに atime および mtime 拡張ヘッダーレコードを含めます。

これらのキーワードに加えて、–x pax 形式が指定されている場合は、–o オプション引数で、実装拡張機能を含む任意のキーワードと値を次の 2 つのモードのどちらかで使用できます。

keyword=value

write または copy モードで使用された場合、これらのキーワード/値のペアは、typeflag g グローバル拡張ヘッダーレコードとしてアーカイブの先頭に含まれます。read または list モードで使用された場合、これらのキーワード/値のペアは、typeflag g グローバル拡張ヘッダーレコードとしてアーカイブの先頭に位置しているかのように機能します。

keyword:=value

write または copy モードで使用された場合、これらのキーワード/値のペアは、各ファイルの typeflag x 拡張ヘッダーの先頭にあるレコードとして含まれます。これは、typeflag g グローバル拡張ヘッダーレコードを作成しない点を除き、等号の形式と同等です。read または list モードで使用された場合、これらのキーワード/値のペアは、各拡張ヘッダーの最後にレコードとして含まれているかのように機能します。そのため、同じ名前のグローバルまたはファイル固有の拡張ヘッダーレコードキーワードはすべてオーバーライドされます。たとえば、次のコマンドでは

pax -r -o "
gname:=mygroup,
" <archive

アーカイブから読み取られたすべてのファイルについて、グループ名が強制的に新しい値に変更されます。

–p string

1 つ以上のファイルの特性オプション (特権) を指定します。string オプション引数は、抽出時に保持または破棄されるファイルの特性を指定する文字列である必要があります。この文字列は、指定文字 aemo、および p で構成されます。同じ文字列内で複数の特性を連結することができ、また複数の –p オプションを指定できます。これらの指定文字の意味は次のとおりです。

a

ファイルのアクセス時間を保持しません。

e

ユーザー ID、グループ ID、ファイルモードビット、アクセス時間、および変更時間を保持します。

m

ファイルの変更時間を保持しません。

o

ユーザー ID とグループ ID を保持します。

p

ファイルモードビットを保持します。

前のリストで、preserve は、呼び出しプロセスのアクセス権に従って、アーカイブ内に格納されている属性が抽出されたファイルに書き込まれることを示します。それ以外の場合、この属性は、通常のファイル作成アクションの一部として決定されます。ファイルのアクセス時間と変更時間は、–p オプションで特に指定されていないかぎり、またアーカイブ内に格納されているかぎり保持されます。保持されないすべての属性は、通常のファイル作成アクションの一部として決定されます。

eo のどちらの指定文字も指定されていない場合、またはユーザー ID とグループ ID が何らかの理由で保持されない場合、pax はファイルモードの setuid および setgid ビットを設定しません。

これらのいずれかの項目の保持が何らかの理由で失敗した場合、pax は診断メッセージを標準エラーに書き込みます。これらの項目を保持できなかった場合は最終的な終了ステータスに影響を与えますが、抽出されたファイルは削除されません。

いずれかの string オプション引数内のファイル固有の文字が重複しているか、または互いに競合している場合は、最後に指定された文字が優先されます。たとえば、–p eme が指定されている場合、ファイルの変更時間は保持されます。

–r

標準入力からアーカイブファイルを読み取ります。

–s replstr

regex(7) の正規表現の構文を使用して、ed(1) s (置換) ユーティリティーに基づいた置換式 replstr に従い pattern または file オペランドで指定されたファイルまたはアーカイブメンバー名を変更します。pax コマンドのコンテキストでは「アドレス」や「行」の概念は意味がないため、指定してはいけません。形式は次のとおりです。

-s /old/new/ [gp]

ここで、ed の場合と同様に、old は基本正規表現であり、new にはアンパサンド (&)、\n 後方参照 (n は数字)、またはサブエクスプレッション照合を含めることができます。また、old 文字列には復帰改行を含めることもできます。

区切り文字として NULL 以外のすべての文字を使用できます (ここでは / を示しています)。複数の –s 式を指定できます。これらの式は指定された順序で適用され、はじめて置換が成功すると終了します。末尾のオプションの g は、ed コマンドで定義されているとおりです。末尾のオプションの p を指定すると、成功した置換が標準エラーに書き込まれます。空の文字列に置換されるファイルまたはアーカイブメンバー名は、アーカイブの読み取りおよび書き込み時に無視されます。

–t

ファイルシステムからファイルを読み取っているときに、各ファイル読み取りのアクセス時間を、pax によって読み取られる前のアクセス時間に設定します。ただし、utime() でこの処理を実行するために必要なアクセス権をユーザーが持っている場合にかぎります。

–u

同じ名前を持つ既存のファイルまたはアーカイブメンバーより古い (ファイルの変更時間が前の時間になっている) ファイルを無視します。

read モード

ファイルシステム内のファイルと同じ名前を持つアーカイブメンバーは、そのアーカイブメンバーがファイルより新しい場合に抽出されます。

write モード

ファイルシステム内のファイルと同じ名前を持つアーカイブファイルのメンバーは、そのファイルがアーカイブメンバーより新しい場合に置き換えられます。オプション –a も同時に指定されている場合、これはアーカイブへの追加によって実行されます。それ以外の場合は、これがアーカイブ内の実際の置換とアーカイブへの追加のどちらによって実行されるかは不確定です。

copy モード

宛先の階層内のファイルは、ソースの階層内のファイルの方が新しい場合にソースの階層内のファイル、またはソースの階層内のファイルへのリンクによって置き換えられます。

–v

list モードでは、詳細な内容リストを生成します (「標準出力」を参照)。それ以外の場合は、アーカイブメンバーのパス名と拡張属性を標準エラーに書き込みます (「標準エラー」を参照)。

–w

ファイルを標準出力に指定されたアーカイブ形式で書き込みます。

–x format

出力アーカイブ形式を指定します。pax ユーティリティーは、次の形式を認識します。

cpio

拡張 cpio(1) 交換形式。IEEE Std 1003.1–2001 を参照してください。文字型特殊アーカイブファイルに対するこの形式のデフォルトの blocksize5120 です。実装では、512 の倍数である、32256 以下のすべての blocksize 値がサポートされます。

このアーカイブ形式では、262143 までの UID と GID を含むファイルをアーカイブ内に格納できます。この値を超える UID と GID を含むファイルは、60001 の UID と GID を使用してアーカイブされます。

pax

pax 交換形式。IEEE Std 1003.1–2001 を参照してください。文字型特殊アーカイブファイルに対するこの形式のデフォルトの blocksize5120 です。実装では、512 の倍数である、32256 以下のすべての blocksize 値がサポートされます。

ustar と同様です。また、UID、GID、devmajordevminor の各値が 2097151 を超えるか、パス (ファイル名を含む) が 255 文字を超えるか、または linkname100 文字を超える、サイズが 8G バイトを超えるファイルのアーカイブや抽出も可能です。

ustar

拡張 tar(1) 交換形式。IEEE 1003.1(1990) の仕様を参照してください。文字型特殊アーカイブファイルに対するこの形式のデフォルトの blocksize10240 です。実装では、512 の倍数である、32256 以下のすべての blocksize 値がサポートされます。

このアーカイブ形式では、2097151 までの UID と GID を含むファイルをアーカイブ内に格納できます。この値を超える UID と GID を含むファイルは、60001 の UID と GID を使用してアーカイブされます。

xustar

ustar と同様です。また、UID、GID、devmajordevminor の各値が 2097151 を超えるか、パス (ファイル名を含む) が 255 文字を超えるか、または linkname100 文字を超える、サイズが 8G バイトを超えるファイルのアーカイブや抽出も可能です。大きな値を処理できないアーカイバによってアーカイブが抽出される場合は、このオプションを使用しないでください。

既存のアーカイブ形式とは異なる形式のアーカイブファイルに追加しようとすると、pax は、0 以外の終了ステータスでただちに終了します。

copy モードでは、–x 形式が指定されていない場合、pax は、–x pax が指定されているかのように動作します。

–X

パス名によって指定されたファイル階層の検索中に、pax は、異なるデバイス ID (st_devstat(2) を参照) を持つディレクトリの下の階層を処理しません。

–@

アーカイブ内に拡張属性を含めます。pax は、デフォルトではアーカイブ内に拡張属性を配置しません。

パス名によって指定されたファイル階層の検索中に、pax は、拡張属性を持つすべてのファイルに対して属性ディレクトリの下の階層を処理します。拡張属性は、特殊ファイルとしてアーカイブに書き込まれます。

ファイルの抽出中にこのフラグが使用された場合は、抽出されているファイルに関連付けられた拡張属性もすべて抽出されます。拡張属性ファイルは、通常のファイルのデータの一部としてのみ抽出できます。拡張属性ファイルだけを明示的に抽出しようとすると無視されます。

–/

アーカイブ内に拡張システム属性を含めます。pax は、デフォルトではアーカイブ内に拡張システム属性を配置しません。

パス名によって指定されたファイル階層の検索中に、pax は、拡張属性を持つすべてのファイルに対して属性ディレクトリの下の階層を処理します。拡張属性は、特殊ファイルとしてアーカイブに書き込まれます。ファイルの抽出中にこのフラグが使用された場合は、抽出されているファイルに関連付けられた拡張属性もすべて抽出されます。拡張属性ファイルは、通常のファイルのデータの一部としてのみ抽出できます。拡張属性ファイルだけを明示的に抽出しようとすると無視されます。

相互排他的なオプションである –H–L を複数指定しても、エラーとはみなされません。最後に指定したオプションが cp の動作を決定します。

ファイルまたはアーカイブメンバーの名前に対して動作するオプション (–c–i–n–s–u、および –v) は、次のように相互に作用します。

read モードでは、–c–n、および –u オプションによって変更されたユーザー指定の pattern オペランドに基づいてアーカイブメンバーが選択されます。次に、すべての –s および –i オプションが (この順序で) 選択されたファイルの名前を変更します。–v オプションは、これらの変更の結果として得られた名前を書き込みます。

write モードでは、–n および –u オプションによって変更されたユーザー指定のパス名に基づいてファイルが選択されます。次に、すべての –s および –i オプションが (この順序で) これらの選択されたファイルの名前を変更します。–v オプションは、これらの変更の結果として得られた名前を書き込みます。

–u オプションと –n オプションの両方が指定されている場合、選択されたファイルは、比較されたファイルより新しくないかぎり pax によって考慮されません。

モードの形式指定の一覧表示

–o listopt=format オプションを使用した list モードでは、形式引数は選択されたファイルごとに適用されます。pax は、選択されたファイルごとに listopt 出力に復帰改行を追加します。format 引数は、次の例外を除き、形式文字列として使用されます。(最初の 5 つの例外については printf(1) を参照)。

  1. 形式文字列内のスペース文字は、変換指定のフラグ以外のどのコンテキストでも、出力にコピーされる通常の文字として扱われます。

  2. 形式文字列内の '' 文字は、スペースとしてではなく、'' 文字として扱われます。

  3. formats(7) のマニュアルページで説明されているエスケープシーケンスに加えて、(\\\\b\f\n\r\t\v)、\ddd (ddd は 1、2、または 3 桁の 8 進数) は、その 8 進数によって指定された数値を持つバイトとして書き込まれます。

  4. d または u 変換指定子からの出力の前後に、形式オペランドによって指定されていない空白は付きません。

  5. o 変換指定子からの出力の前に、形式オペランドによって指定されていない 0 は付きません。

  6. シーケンス (keyword) を形式変換指定子の前に置くことができます。この変換引数は、keyword の値によって定義されます。次のキーワードがサポートされています (IEEE Std 1003.1–2001 を参照)。

    • ustar ヘッダーブロック」および「オクテット指向の cpio アーカイブエントリ」内のいずれかの「フィールド名」エントリ。実装では、「cpio c_mode フィールドの値」に必要な形式に加えて、先行する c_ のない cpio キーワードがサポートされます。

    • pax 拡張ヘッダー」で拡張ヘッダーに対して定義されているいずれかのキーワード。

    • pax 拡張ヘッダー」で定義されている拡張ヘッダー内の、実装で定義された拡張機能として提供されているいずれかのキーワード。

    たとえば、シーケンス「%(charset)s」は、拡張ヘッダー内の文字セットの名前の文字列値です。

    キーワード変換引数の結果は、末尾に NUL が付かない、適用可能なヘッダーフィールドまたは拡張ヘッダーからの値です。

    変換引数として使用されるすべてのキーワード値は、必要に応じて、UTF-8 エンコーディングからローカルファイルシステムやユーザーデータベースなどに適した文字セットに変換されます。

  7. 追加の変換指定子文字である T は、時間の形式を指定するために使用されます。T 変換指定子文字の前に、シーケンス (keyword=subformat) を指定できます。ここで、subformatdate オペランドで定義されている日付の形式です。デフォルトの keywordmtime であり、デフォルトの subformat は次のとおりです。

    %b %e %H:%M %Y
  8. 追加の変換指定子文字である M は、ls 標準出力で定義されているファイルモード文字列を指定するために使用されます。(keyword) が省略されている場合は、mode キーワードが使用されます。たとえば、%.1M は、ls –l コマンドの entry type フィールドに対応する 1 文字を書き込みます。

  9. 追加の変換指定子文字である D は、ブロックまたは特殊ファイル (該当する場合) のデバイスを実装で定義された形式で指定するために使用されます。該当せず、かつ (keyword) が指定されている場合、この変換は %(keyword)u と同等です。該当せず、かつ (keyword) が省略されている場合、この変換はスペースと同等です。

  10. 追加の変換指定子文字である F は、パス名を指定するために使用されます。F 変換文字の前に、コンマで区切られたキーワードのシーケンスを指定できます。

    (keyword[,keyword] ... )

    NULL 以外のすべてのキーワード値は、各値が '/' で区切られて連結されます。キーワード path が定義されている場合、デフォルトは (path) です。それ以外の場合、デフォルトは (prefix,name) です。

  11. 追加の変換指定子文字である L は、シンボリックリンクの展開を指定するために使用されます。現在のファイルがシンボリックリンクである場合、%L は次のように展開されます。

    "%s -> %s", value of keyword, contents of link

    それ以外の場合、%L 変換指定は %F と同等です。

オペランド

次のオペランドがサポートされています。

directory

copy モードでの宛先ディレクトリのパス名。

file

コピーまたはアーカイブされるファイルのパス名。

pattern

アーカイブメンバーの 1 つ以上のパス名に一致するパターン。このパターンは、fnmatch(7) のマニュアルページにあるパターンマッチング表記法に準拠している必要があります。pattern が指定されていない場合、デフォルトでは、アーカイブ内のすべてのメンバーを選択します。

出力

次に、出力形式について説明します。

標準出力

write モードでは、–f が指定されていない場合、標準出力は下で説明されているいずれかの形式に従ってフォーマットされたアーカイブです。サポートされている形式の一覧については、–x format を参照してください。

list モードでは、–o listopt=format オプションが指定されている場合、選択されたアーカイブメンバーは、上の「モードの形式指定の一覧表示」で説明されている形式を使用して標準出力に書き込まれます。–o listopt=format オプションを使用しない list モードでは、選択されたアーカイブメンバーの内容リストは、次の形式を使用して標準出力に書き込まれます。

"%s\n", pathname

list モードで –v オプションが指定されている場合、選択されたアーカイブメンバーの内容リストは、次の形式を使用して標準出力に書き込まれます。

  • アーカイブの以前のメンバーへのハードリンクを表すパス名の場合:

    "%s == %s\n", <ls -l listing, linkname
  • その他のすべてのパス名の場合:

    "%s\n", <ls -l listing>

    ここで、<ls –l listing> は、–l オプションを使用した ls コマンドによって指定された形式です。この形式でパス名を書き込む場合、基盤となるアーカイブ形式に正しい情報が含まれていないフィールドに対して書き込まれる内容は不確定ですが、空白文字で区切られた正しい数のフィールドが書き込まれます。

list モードでは、標準出力が 1 回につき 1 行を超えてバッファリングされることはありません。

標準エラー

readwrite、または copy モードで –v が指定されている場合、pax は、処理したパス名を次の形式を使用して標準エラー出力に書き込みます。

"%s\n", pathname

これらのパス名は、ファイルまたはアーカイブメンバーに対して処理が開始されするとすぐに書き込まれ、標準エラーにフラッシュされます。バッファリングされない末尾の復帰改行文字は、ファイルが読み取られるか、または書き込まれたときに書き込まれます。

–s オプションが指定されておらず、かつ置換文字列の末尾に p が含まれている場合、置換は次の形式で標準エラーに書き込まれます。

"%s >> %s\n", <original pathname>, <new pathname>

pax のすべての動作モードで、入力アーカイブ形式とボリューム番号、ファイル、ブロック、ボリューム、およびメディア部分の数に関する未指定の形式のオプションメッセージや、その他の診断メッセージを標準エラーに書き込むことができます。

標準出力と標準エラーの両方のすべての形式で、パス名またはリンク名内の非印字文字がどのように書き込まれるかは不確定です。

pax–x pax アーカイブ形式を使用した read モードまたは list モードにあるときに、拡張ヘッダーレコード内のファイル名、リンク名、所有者名、またはその他のいずれかのフィールドを pax UTF-8 コードセット形式から実装のコードセットや現在のロケールに変換できない場合、pax は診断メッセージを標準エラーに書き込み、–o invalid= オプションで説明されているようにファイルを処理してから、アーカイブ内の次のファイルを処理します。

出力ファイル

read モードでは、抽出された出力ファイルのタイプはアーカイブされたファイルと同じです。copy モードでは、コピーされた出力ファイルのタイプはコピーされるファイルと同じです。どちらのモードでも、宛先の階層内の既存のファイルが上書きされるのは、アクセス権 (–p)、変更時間 (–u)、および無効な値 (–o invalid=) のすべてのテストで許可された場合だけです。write モードでは、–f オプション引数で指定された出力ファイルは、IEEE Std 1003.1–2001 のいずれかの仕様に従ってフォーマットされたファイルです。

エラー

pax がアーカイブを読み取っているときにファイルまたはリンクを作成できない場合、アーカイブを書き込んでいるときにファイルを検索できない場合、または –p オプションが指定されているときにユーザー ID、グループ ID、またはファイルモードを保持できない場合は、診断メッセージが標準エラーに書き込まれ、0 以外の終了ステータスが返されますが、処理は続行されます。pax がファイルへのリンクを作成できない場合、デフォルトでは、pax はファイルの 2 つ目のコピーを作成しません。

アーカイブからのファイルの抽出がシグナルまたはエラーによって途中で終了された場合、pax はファイルを部分的にしか抽出していないか、または –n オプションが指定されなかった場合は、ユーザーによって指定されたファイルと同じ名前のファイルを抽出している可能性があります。ただし、このファイルはユーザーが希望したものではありません。さらに、抽出されたディレクトリのファイルモードに読み取り、書き込み、実行マスクの余分のビットが設定されていたり、正しくない変更やアクセス時間が含まれていたりする可能性があります。

使用法

–p (特権) オプションは、tar(1)cpio(1) の従来からの実装の違いを調整するために考案されました。特に、この 2 つのユーティリティーは –m を正反対の方法で使用します。–p オプションはまた、セキュリティーシステムの強化や高性能なファイルなど、将来のファイル属性に対処する方法を拡張するための一貫性のある手段を提供します。複雑に見えるかもしれませんが、実際には、もっとも一般的に使用される次の 2 つのモードがあります。

–p e

すべてを保持します。これは、アーカイブ内に記録されているファイルのすべての側面を保持するために、すべての適切な特権を持つ従来のスーパーユーザーによって使用されます。e フラグは、op、およびその他の実装依存の属性の合計です。

–p p

ファイルモードビットを保持します。これは、所有権以外のファイルの側面を保持したいと考えている、通常の特権を持つユーザーによって使用されます。デフォルトではファイルの時間が保持されますが、これを無効にして抽出の時間を使用するために、ほかの 2 つのフラグが提供されています。

標準入力の 1 行あたり 1 つのパス名の形式では、復帰改行を含むパス名が除外されます。このようなパス名は移植可能なファイル名のガイドラインに違反しますが、存在する場合があり、それらの存在によってシェルスクリプト内での pax の使用が妨げられることがあります。この問題は、従来のアーカイブプログラムから継承されています。この問題は、標準入力ではなく、コマンド行でファイル名引数のリストを指定することによって回避できます。

pax でこの部分を実行するには、適切な特権が必要なことがほぼ確実です。具体的には、ブロック型特殊または文字型特殊タイプのファイルの作成、ファイルのアクセス時間の復元 (ファイルがそのユーザーによって所有されていない場合) (–t オプション)、ファイル所有者、グループ、モードの保持 (–p オプション) などにはすべて、適切な特権が必要である可能性があります。

read モードでは、アーカイブに同じ名前を持つ複数のメンバーが含まれている場合、ファイルを上書きすることが許可されています。ファイルの最初のバージョンに対するアクセス権によってその上書きが許可されていない場合、これは失敗することがあります。

–x xustar および –x –pax アーカイブ形式を使用しているとき、基盤となるファイルシステムがアーカイブされるファイルにホールが含まれていることを報告した場合、Solaris pax ユーティリティーは、そのファイルのアーカイブ時にホールの存在を拡張ヘッダーレコード内に記録します。この拡張ヘッダーレコードがアーカイブ内のファイルに関連付けられていると、そのファイルがアーカイブから抽出された場合は常に、これらのホールが再作成されます。lseek(2)SEEK_DATASEEK_HOLE の whence 値を参照してください。その他のすべての場合、アーカイブ内にある NUL (\0) 文字はすべて、抽出されたときにファイルに書き込まれます。

標準入力

write モードでは、標準入力は file オペランドが指定されていない場合にのみ使用されます。これは、先頭にも末尾にも空白のないパス名のリスト (1 行に 1 つのパス名) を含むテキストファイルです。list および read モードでは、–f が指定されていない場合、標準入力はアーカイブファイルです。それ以外の場合、標準入力は使用されません。

入力ファイル

archive オプション引数、またはアーカイブの読み取り元になっている標準入力で指定された入力ファイルは、下で説明されているいずれかの形式に従ってフォーマットされたファイルです。「拡張機能説明」を参照してください。ファイル /dev/tty は、プロンプトを書き込んだり、応答を読み取ったりするために使用されます。

使用例 1 現在のディレクトリの内容のコピー

次のコマンドを見てください。

example% pax -w -f /dev/rmt/1m .

現在のディレクトリの内容をテープドライブ 1 (中密度) にコピーします。これは、従来の System V のデバイス命名手順を前提にしています。従来の BSD デバイス名は、/dev/rmt9 になります。

使用例 2 ディレクトリ階層のコピー

次のコマンドを見てください。

example% mkdir newdir
example% pax -rw olddir newdir

olddir ディレクトリ階層を newdir にコピーします。

使用例 3 現在のディレクトリを基準にして抽出されたアーカイブの読み取り

次のコマンドを見てください。

example% pax -r -s ',^//*usr//*,,' -f a.pax

アーカイブ内の /usr をルートとするすべてのファイルが現在のディレクトリを基準にして抽出されたアーカイブ .pax を読み取ります。

使用例 4 デフォルト出力の説明のオーバーライド

次のオプションを使用します。

-o listopt="%M %(atime)T %(size)D %(name)s"

標準出力」のデフォルト出力の説明をオーバーライドし、代わりに次の出力を書き込みます。

-rw-rw- - - Jan 12 15:53 2003 1492 /usr/foo/bar

次のオプションを使用します。

-o listopt='%L\t%(size)D\n%.7' \
-o listopt='(name)s\n%(atime)T\n%T'

標準出力のデフォルト出力の説明をオーバーライドし、代わりに次の出力を書き込みます。

usr/foo/bar -> /tmp             1492
/usr/foo
Jan 12 15:53 1991
Jan 31 15:53 2003

環境変数

pax の実行に影響を与える次の環境変数についての詳細は、environ(7) を参照してください。LANG、LC_ALL、LC_CTYPE、LC_MESSAGES、LC_TIME、および NLSPATH。

LC_COLLATE

pattern オペランドのパターンマッチング式で使用される範囲、同等クラス、複数文字照合要素の動作、–s オプションでの基本正規表現、および LC_MESSAGES カテゴリの yesexpr ロケールキーワードで定義されている拡張正規表現のためのロケールを決定します。

TMPDIR

「オプション」セクションで説明されている –o globexthdr= キーワードの説明にあるように、デフォルトのグローバル拡張ヘッダーレコードファイルの一部を提供するパス名を決定します。

TZ

–v オプションが指定されている場合に日付と時間の文字列を計算するために使用されるタイムゾーンを決定します。TZ が指定されていない、または NULL の場合は、デフォルトのタイムゾーンが使用されます。

終了ステータス

次の終了ステータスが返されます。

0

ファイルはすべて正しく処理されました。

>0

エラーが発生しました。

詳細説明

pax 交換形式

–xpax 形式で生成された pax アーカイブテープまたはファイルには、一連のブロックが含まれています。アーカイブの物理配列は、「ustar 交換形式」で説明されている ustar 形式と同じです。アーカイブされた各ファイルは、次のシーケンスによって表されます。

  • 拡張ヘッダーレコードを含むオプションのヘッダーブロック。このヘッダーブロックは、x または gtypeflag 値を持つ 27403 の形式になっています。拡張ヘッダーレコードは、このヘッダーブロックのデータとして含まれています。

  • ファイルを説明しているヘッダーブロック。前のオプションの拡張ヘッダーにフィールドが存在する場合、このファイルのこのヘッダーブロック内の関連するフィールドはすべてオーバーライドされます。

  • ファイルの内容を含む 0 個以上のブロック。

アーカイブファイルの最後に、アーカイブの終了インジケータとして解釈される、バイナリ 0 で埋められた 2 つの 512 バイトブロックが存在します。

次に、pax 形式のアーカイブ内にグローバル拡張ヘッダーレコードと 2 つの実際のファイルを含むアーカイブの例の概要を示します。この例では、アーカイブ内の 2 番目のファイルの前に拡張ヘッダーが存在しません。これはおそらく、拡張属性を必要としないためです。

説明
ブロック
グローバル拡張ヘッダー
ustar ヘッダー [typeflag=g]
グローバル拡張ヘッダーデータ
ファイル 1: 拡張ヘッダーが含まれている
ustar ヘッダー [typeflag=x]
拡張ヘッダーデータ
[typeflag=0]
ファイル 1 の ustar ヘッダーデータ
ファイル 2: 拡張ヘッダーは含まれていない
ustar ヘッダー [typeflag=0]
ファイル 2 のデータ
アーカイブの終了インジケータ
バイナリ 0 のブロック
バイナリ 0 のブロック

pax ヘッダーブロック

pax ヘッダーブロックは、2 つの typeflag 値が追加で定義されている点を除き、「ustar 交換形式」で説明されている ustar ヘッダーブロックと同じです。

g

アーカイブ内の次のファイルのグローバル拡張ヘッダーレコードを表します。これらの拡張ヘッダーレコードの形式は、「pax 拡張ヘッダー」で説明されているとおりです。各値は、同じフィールドの別の値を提供する別のグローバル拡張ヘッダーレコードに到達するまで、自身の拡張ヘッダーレコードではその値をオーバーライドしない以降のすべてのファイルに影響を与えます。typeflag g グローバルヘッダーを、アーカイブの転送中に部分的なデータ損失が発生する可能性のある交換メディアでは使用しないでください。

x

アーカイブ内の (独自の ustar ヘッダーブロックを持つ) 次のファイルの拡張ヘッダーレコードを表します。これらの拡張ヘッダーレコードの形式は、「pax 拡張ヘッダー」で説明されているとおりです。

このどちらのタイプでも、size フィールドは、拡張ヘッダーレコードのサイズ (オクテット単位) です。ヘッダーブロック内のその他のフィールドは、このバージョンの pax では意味がありません。ただし、このアーカイブが以前のバージョンの ISO POSIX-2:1993 規格に準拠する pax によって読み取られた場合は、拡張ヘッダーレコードをデータとして含む通常ファイルを作成するためにヘッダーブロックフィールドが使用されます。そのため、この通常ファイルへの妥当なファイルアクセスを提供するヘッダーブロックフィールドの値を選択するようにしてください。

ustar ヘッダーブロックとのその他の違いとして、typeflag 1 (数字の 1) のファイル (ハードリンク) のためのデータブロックが含まれている可能性がある、つまり size フィールドが 0 より大きい場合があります。pax –o linkdata によって作成されたアーカイブには、ハードリンクを含むこれらのデータブロックが含まれています。

pax 拡張ヘッダー

pax 拡張ヘッダーには、ISO/IEC 646: 1991 規格で説明されているもの以外の文字エンコーディングが必要なフィールド、ustar ヘッダーで説明されていないファイル属性を表すフィールド、形式または長さが ustar ヘッダーの要件を満たさないフィールドなど、その形式の制限のために ustar ヘッダーブロックには適さない値が含まれています。拡張ヘッダー内の値によって、指定された (1 つまたは複数の) ファイルに属性が追加されるか、または次のキーワードのリストに示すように、指定されたヘッダーブロック内の値がオーバーライドされます。typeflag g ヘッダーブロックの説明を参照してください。

拡張ヘッダーは、それぞれが次のように構築された 1 つ以上のレコードで構成されます。

"%d %s=%s\n", length, keyword, value

拡張ヘッダーレコードは、ISO/IEC 10646-1: 2000 標準 (UTF-8) に従ってエンコードされます。length空白、等号 (=)、および復帰改行は、UTF-8 でエンコードされた移植可能な文字セットに制限されます。keywordvalue には、任意の UTF-8 文字を指定できます。length は、末尾の復帰改行を含む拡張ヘッダーレコードの 10 進数の長さ (オクテット単位) です。ファイルに対して有効な hdrcharset 拡張ヘッダーが存在する場合、gnamelinkpathpath、および uname 拡張ヘッダーレコードの値フィールドは hdrcharset 拡張ヘッダーレコードによって指定された文字セットを使用してエンコードされます。そうでない場合、値フィールドは UTF-8 を使用してエンコードされます。POSIX.1-2008 によって指定されたその他のすべてのキーワードの値フィールドは、UTF-8 を使用してエンコードされます。

keyword は、次のリストのいずれかのエントリか、または実装拡張機能として提供されているキーワードです。すべてが小文字、数字、およびピリオドで構成されているキーワードは、将来の標準化のために予約されています。キーワードに等号は含まれません。

次のリストで、file(s) または block(s) の表記は、あるキーワードによって影響を受けるファイルが、通常は typeflag x 拡張ヘッダーのあとにある指定された 1 つのファイルだが、場合によっては typeflag g のあとにある複数のファイルであることを確認するために使用されます。リストにある write または copy モードのときに pax でレコードを含める要件はすべて、–o オプションを使用してこのようなレコードがまだ指定されていない場合にのみ適用されます。copy モードで使用された場合、pax は、適用可能な拡張ヘッダーレコードを使用してアーカイブが作成され、そのあとに抽出されたかのように動作します。

atime

指定されたファイルのアクセス時間。これは、stat(2) 関数で説明されている、あるファイルに対応する stat 構造体の st_atime メンバーの値と同じです。このアクセス時間 (atime) は、プロセスがそのために必要な適切な特権を持っている場合に復元されます。value の形式は、「pax 拡張ヘッダーファイルの時間」で説明されているとおりです。

charset

指定されたファイル内のデータをエンコードするために使用される文字セットの名前。次の表にあるエントリは、既知の規格を参照するように定義されています。その他の名前を発信者と受信者の間で合意できます。

value
公式な規格
ISO-IR 646 1990
ISO/IEC646:1990
ISO-IR 8859 1 1998
ISO/IEC8859–1:1998
ISO-IR 8859 2 1999
ISO/IEC 8859–2:1999
ISO-IR 8859 3 1999
ISO/IEC 8859–3:1999
ISO-IR 8859 4 1999
ISO/IEC8859–4:1998
ISO-IR 8859 5 1999
ISO/IEC8859–5–1999
ISO-IR 8859 6 1999
ISO/IEC8859–6–1999
ISO-IR 8859 7 1987
ISO/IEC8859–7:1987
ISO-IR 8859 8 1999
ISO/IEC8859–8:1999
ISO-IR 8859 9 1999
ISO/IEC8859–9:1999
ISO-IR 8859 10 1998
ISO/IEC8859–10:1999
ISO-IR 8859 13 1998
ISO/IEC8859–13:1998
ISO-IR 8859 14 1998
ISO/IEC8859–14:1998
ISO-IR 8859 15 1999
ISO/IEC8859–15:1999
ISO-IR 10646 2000
ISO/IEC 10646:2000
ISO-IR 10646 2000 UTF-8
ISO/IEC 10646、UTF-8 エンコーディング
BINARY
なし

拡張ヘッダー内のエンコーディングは、情報のためにのみ含まれています。pax は、IEEE Std 1003.1-200x の説明のとおりに使用されている場合、ファイルデータをほかのどのエンコーディングにも変換しません。BINARY エントリは、エンコードされていないバイナリデータを示します。write または copy モードで使用された場合、pax がファイルに charset 拡張ヘッダーレコードを含めるかどうかは実装で定義されています。

comment

コメントとして使用される一連の文字。value フィールド内の文字はすべて、pax によって無視されます。

gid

ファイルを所有するグループのグループ ID。ISO/IEC 646: 1991 規格の数字を使用した 10 進数として表されます。このレコードによって、指定されたヘッダーブロック内の gid フィールドがオーバーライドされます。write または copy モードで使用された場合、pax は、グループ ID が 2097151 (8 進数の 7777777) を超えるファイルごとに gid 拡張ヘッダーレコードを含めます。

gname

ファイルのグループ。グループデータベース内のグループ名としてフォーマットされます。このレコードによって、指定されたヘッダーブロック内の gid フィールドと gname フィールド、およびすべての gid 拡張ヘッダーレコードがオーバーライドされます。read、copy、または list モードで使用された場合、pax は、ヘッダーレコード内の名前を UTF-8 エンコーディングから受信側のシステム上のグループデータベースに適した文字セットに変換します。いずれかの UTF-8 文字を変換できず、かつ –o invalid=UTF-8 オプションが指定されていない場合、結果は実装で定義されています。write または copy モードで使用された場合、pax は、グループ名を移植可能な文字セットの文字と数字だけで表すことができないファイルごとに gname 拡張ヘッダーレコードを含めます。

hdrcharset

gnamelinkpathpath、および uname pax 拡張ヘッダーレコードの値フィールドをエンコードするために使用される文字セットの名前。既知の標準を参照するために、次のエントリが定義されています。発信者と受信者の間で追加の名前が合意される可能性があります。

value
Formal Standard
ISO-IR106462000UTF-8
ISO/IEC 10646, UTF-8 encoding
BINARY
None

hdrcharset 拡張ヘッダーレコードが指定されていない場合、拡張ヘッダーレコード内のすべての値をエンコードするために使用されるデフォルトの文字セットは ISO/IEC 10646-1:2000 標準 UTF-8 エンコーディングになります。

linkpath

以前にアーカイブされた任意のタイプの別のファイルに作成されるリンクのパス名。このレコードによって、指定された ustar ヘッダーブロック内の linkname フィールドがオーバーライドされます。指定された ustar ヘッダーブロックによって、作成されるリンクのタイプが決定されます。指定されたヘッダーブロックの typeflag が 1 である場合は、ハードリンクです。typeflag が 2 である場合は、シンボリックリンクであり、linkpath 値はそのシンボリックリンクの内容です。pax は、リンクの名前 (シンボリックリンクの内容) を UTF-8 エンコーディングからローカルファイルシステムに適した文字セットに変換します。write または copy モードで使用された場合、pax は、パス名を NULL 以外の移植可能な文字セットのメンバーだけで表すことができないリンクごとに linkpath 拡張ヘッダーレコードを含めます。

mtime

以前にアーカイブされた任意のタイプの別のファイルに作成されるリンクのパス名。このレコードによって、指定された ustar ヘッダーブロック内の linkname フィールドがオーバーライドされます。指定された ustar ヘッダーブロックによって、作成されるリンクのタイプが決定されます。指定されたヘッダーブロックの typeflag1 である場合は、ハードリンクです。typeflag2 である場合は、シンボリックリンクであり、linkpath 値はそのシンボリックリンクの内容です。pax は、リンクの名前 (シンボリックリンクの内容) を UTF-8 エンコーディングからローカルファイルシステムに適した文字セットに変換します。write または copy モードで使用された場合、pax は、パス名を NULL 以外の移植可能な文字セットのメンバーだけで表すことができないリンクごとに linkpath 拡張ヘッダーレコードを含めます。

path

指定されたファイルのパス名。このレコードによって、指定されたヘッダーブロック内の名前と prefix フィールドがオーバーライドされます。pax は、ファイルのパス名を UTF-8 エンコーディングからローカルファイルシステムに適した文字セットに変換します。write または copy モードで使用された場合、pax は、パス名を NULL 以外の移植可能な文字セットのメンバーだけで表すことができないファイルごとに path 拡張ヘッダーレコードを含めます。

realtime.any

realtime が接頭辞として付けられたキーワードは、将来の標準化のために予約されています。

security.any

security が接頭辞として付けられたキーワードは、将来の標準化のために予約されています。

size

ファイルのサイズ (オクテット単位)。ISO/IEC 646: 1991 規格の数字を使用した 10 進数として表されます。このレコードによって、指定されたヘッダーブロック内の size フィールドがオーバーライドされます。write または copy モードで使用された場合、pax は、size 値が 8589934591 (8 進数の 77777777777) を超えるファイルごとに size 拡張ヘッダーレコードを含めます。

uid

ファイル所有者のユーザー IDISO/IEC 646:1991 規格の数字を使用した 10 進数として表されます。このレコードによって、次のヘッダーブロック内の uid フィールドがオーバーライドされます。write または copy モードで使用された場合、pax は、所有者 ID が 2097151 (8 進数の 7777777) を超えるファイルごとに uid 拡張ヘッダーレコードを含めます。

uname

指定されたファイルの所有者。ユーザーデータベース内のユーザー名としてフォーマットされます。このレコードによって、指定されたヘッダーブロック内の uid フィールドと uname フィールド、およびすべての uid 拡張ヘッダーレコードがオーバーライドされます。read、copy、または list モードで使用された場合、pax は、ヘッダーレコード内の名前を UTF-8 エンコーディングから受信側のシステム上のユーザーデータベースに適した文字セットに変換します。いずれかの UTF-8 文字を変換できず、かつ –o invalid=UTF-8 オプションが指定されていない場合、結果は実装で定義されています。write または copy モードで使用された場合、pax は、ユーザー名を移植可能な文字セットの文字と数字だけで表すことができないファイルごとに uname 拡張ヘッダーレコードを含めます。

value フィールドの長さが 0 である場合は、これによりヘッダーブロックフィールド、以前に入力された拡張ヘッダー値、または同じ名前のグローバル拡張ヘッダー値がすべて削除されます。

拡張ヘッダーレコード (または –o オプション引数) 内のキーワードによって ustar ヘッダーブロック内の対応するフィールドがオーバーライドまたは削除される場合、pax は、そのヘッダーブロックフィールドの内容を無視します。

ustar ヘッダーブロックフィールドとは異なり、NULL で値が区切られることはありません。value フィールド内の文字はすべて、そのフィールドのデータと見なされます。

pax 拡張ヘッダーのキーワードの優先順位

このセクションでは、さまざまなヘッダーレコード、フィールド、およびコマンド行オプションがアーカイブ内のファイルへの適用のために選択される優先順位について説明します。read または list モードで使用された場合、pax は、次のシーケンスでファイル属性を決定します。

  1. –o delete=keyword-prefix が使用されている場合、影響を受ける属性は該当する場合は手順 7 から決定され、それ以外の場合は無視されます。

  2. –o keyword:= が使用されている場合、影響を受ける属性は無視されます。

  3. –o keyword:=value が使用されている場合は、影響を受ける属性にその値が割り当てられます。

  4. typeflag x 拡張ヘッダーレコードが存在する場合は、影響を受ける属性にその値が割り当てられます。拡張ヘッダーレコードが競合する場合は、ヘッダー内で最後に指定されたものが優先されます。

  5. –o keyword=value が使用されている場合は、影響を受ける属性にその値が割り当てられます。

  6. typeflag g グローバル拡張ヘッダーレコードが存在する場合は、影響を受ける属性にその値が割り当てられます。グローバル拡張ヘッダーレコードが競合する場合は、グローバルヘッダー内で最後に指定されたものが優先されます。

  7. それ以外の場合、属性は ustar ヘッダーブロックから決定されます。

pax 拡張ヘッダーファイルの時間

write または copy モードでは、ustar 交換形式で説明されている ustar ヘッダー論理レコード内でファイルの変更時間を正確に表すことができない場合、pax は、ファイルごとに mtime レコードを書き込みます。これは、時間が ustar の範囲外である場合、または基盤となる実装のファイルシステムが整数以外の時間粒度をサポートしており、かつ時間が整数でない場合に発生することがあります。これらの時間レコードはすべて、基準時間からの時間の 10 進数表現 (秒単位) としてフォーマットされます。ピリオド (.) の小数点文字が存在する場合は、小数点の右にある桁が 1 秒未満の時間粒度の単位を表します。ここで、最初の桁が 10 分の 1 秒であり、以降の各桁は前の桁の 10 分の 1 です。read または copy モードでは、pax は、ファイルの時間をヘッダーファイルの入力の時間を超えない最大の値に切り詰めます。write または copy モードでは、pax は、時間を 10 進数として正確に表すことができる場合は時間を正確に出力し、それ以外の場合は、基盤となる実装が同じ時間粒度をサポートしているシステム上でファイルが抽出された場合に同じ時間が復元されるように十分な桁のみを生成します。

ustar 交換形式

ustar のアーカイブテープまたはファイルには、一連の論理レコードが含まれています。各論理レコードは、512 オクテットの固定サイズの論理レコードです。この形式を 9 トラックの業界標準の 12.7mm (0.5 インチ) 磁気テープ上に格納される形式であると考えることができますが、その他のタイプのトランスポータブルメディアも除外されません。アーカイブされた各ファイルは、ファイルを説明しているヘッダー論理レコードと、それに続くファイルの内容を提供している 0 個以上の論理レコードによって表されます。アーカイブファイルの最後に、アーカイブの終了インジケータとして解釈される、バイナリ 0 で埋められた 2 つの 512 オクテット論理レコードが存在します。

–bblocksize および –x ustar オプションで説明されているように、論理レコードを物理 I/O 操作のためにグループ化できます。論理レコードの各グループは、write(2) 関数と同等の 1 回の操作で書き込むことができます。磁気テープ上では、この書き込みの結果が 1 つのテープ物理ブロックになります。最後の物理ブロックは常にフルサイズであるため、2 つの 0 の論理レコードのあとの論理レコードには未定義のデータを含めることができます。

ヘッダー論理レコードは、次の表に示すように構造化されます。長さとオフセットはすべて 10 進数です。

表 1  ustar ヘッダーブロック
フィールド名
オクテットのオフセット
長さ (オクテット単位)
name
0
100
mode
100
8
uid
108
8
gid
116
8
size
124
12
mtime
136
12
chksum
148
8
typeflag
156
1
linkname
157
100
magic
257
6
version
263
2
uname
265
32
gname
297
32
devmajor
329
8
devminor
337
8
prefix
345
155

ヘッダー論理レコード内の文字はすべて、ISO/IEC 646: 1991 規格のコード化文字セットによって表されます。実装間の移植性を最大化するために、名前は、移植可能なファイル名文字セットによって最上位ビットが 0 のオクテットとして表される文字から選択するようにしてください。実装によって、ファイル、ユーザー、グループの名前にスラッシュおよび移植可能なファイル名文字セット以外の文字を使用することがサポートされている場合は、これらの文字の、実装で定義された 1 つ以上のエンコーディングが交換のために提供されます。

pax は、IEEE Std 1003.1-200x で説明されている手順を使用してアクセスできないローカルシステム上にはファイル名を作成しません。無効なファイル名を作成するファイル名がメディア上で見つかった場合、そのファイルからのデータがファイル階層に格納されるかどうかや、どのような名前で格納されるかは実装で定義されています。pax は、ファイルが無視されることを示すエラーを生成するかぎり、これらのファイルを無視することを選択できます。ヘッダー論理レコード内の各フィールドは連続しています。つまり、パディングは使用されません。

ヘッダー論理レコード内の各フィールドは連続しています。パディングは使用されません。アーカイブメディア上の各文字は連続して格納されます。

magicunamegname の各フィールドは、それぞれ NULL 文字で終了する文字列です。namelinknameprefix の各フィールドは、最後の文字を含む配列内のすべての文字に NULL 以外の文字が含まれている場合を除き、NULL で終了する文字列です。version フィールドは、文字 00 を含む 2 つのオクテット (0-0) です。typeflag には 1 文字が含まれています。その他のフィールドはすべて、ISO/IEC 646:1991 規格の IRV の数字を使用した、先行する 0 で埋められた 8 進数です。各数値フィールドは、1 つ以上のスペースまたは NULL 文字で終了します。

アーカイブメディア上の各文字は連続して格納されます。magicunamegname の各フィールドは、それぞれ NULL 文字で終了する文字列です。

namelinknameprefix は、最後の文字を含む配列内のすべての文字に NULL 以外の文字が含まれている場合を除き、NULL で終了する文字列です。version フィールドは、文字 00 を含む 2 つのオクテット (0-0) です。typeflag には 1 文字が含まれています。その他のフィールドはすべて、ISO/IEC 646: 1991 規格の IRV の数字を使用した、先行する 0 で埋められた 8 進数です。各数値フィールドは、1 つ以上のスペースまたは NULL 文字で終了します。

name および prefix フィールドによって、ファイルのパス名が生成されます。prefix が空の文字列でない (その最初の文字が NULL でない) 場合は、prefix (最初の NULL 文字まで)、スラッシュ文字、および名前を連結することによって新しいパス名が形成されます。それ以外の場合は、名前だけが使用されます。いずれの場合も、名前は最初の NULL 文字で終了します。prefixNULL 文字で始まる場合、このフィールドは無視されます。この方法でサポートできるパス名は、最大 256 文字です。提供されているスペースにパス名が収まらない場合、pax はユーザーにエラーを通知し、ファイルのどの部分も (ヘッダーもデータも) メディア上に格納しません。

linkname フィールドは、パス名の生成に prefix を使用しません。そのため、linkname は 100 文字に制限されています。提供されているスペースに名前が収まらない場合、pax はユーザーにエラーを通知し、そのリンクをメディア上に格納しようとする試みを行いません。mode フィールドは、ISO/IEC 646: 1991 規格の 8 進数表現でエンコードされた 12 ビットを提供します。エンコードされたビットは、ustar mode フィールドの次の値を表します。

ビット値
IEE Std 1003.1 - 2001 ビット
説明
04000
S_ISUID
実行時に UID を設定
02000
S_ISGID
実行時に GID を設定
01000
reserved
将来の標準化のために予約済み
00400
S_IRUSR
ファイル所有者クラスの読み取り権
00200
S_IWUSR
ファイル所有者クラスの書き込み権
00100
S_IXUSR
ファイル所有者クラスの実行/検索権
00040
S_IRGRP
ファイルグループクラスの読み取り権
00020
S_IWGRP
ファイルグループクラスの書き込み権
00010
S_IXGRP
ファイルグループクラスの実行/検索権
00004
S_IROTH
ファイルのその他のクラスの読み取り権
00002
S_IWOTH
ファイルのその他のクラスの書き込み権
00001
S_IXOTH
ファイルのその他のクラスの実行/検索権

これらのいずれかのモードビットを設定するために適切な特権が必要なときに、アーカイブからファイルを復元するユーザーが適切な特権を持っていない場合、そのユーザーが適切な特権を持っていないモードビットは無視されます。アーカイブ形式の一部のモードビットは、ボリューム IEEE Std 1003.1-200x 内のほかの場所でも説明されていません。実装がこれらのビットをサポートしていない場合は、そのビットを無視できます。

uid フィールドと gid フィールドはそれぞれ、ファイルの所有者とグループのユーザー ID とグループ ID です。

size フィールドは、ファイルのサイズ (オクテット単位) です。typeflag フィールドがタイプ 1 (リンク) または 2 (シンボリックリンク) のファイルを指定するように設定されている場合、size フィールドは 0 として指定されます。typeflag フィールドがタイプ 5 (ディレクトリ) のファイルを指定するように設定されている場合、size フィールドは、そのレコードタイプの定義で説明されているとおりに解釈されます。タイプ 1、2、または 5 の場合、データ論理レコードは格納されません。typeflag フィールドが 3 (文字型特殊ファイル)、4 (ブロック型特殊ファイル)、または 6 (FIFO) に設定されている場合、size フィールドの意味はボリューム IEEE Std 1003.1-200x では指定されておらず、データ論理レコードはメディア上に格納されません。さらに、タイプ 6 の場合、size フィールドは読み取り時に無視されます。typeflag フィールドがその他のいずれかの値に設定されている場合、ヘッダーのあとに書き込まれる論理レコードの数は (size+511)/512 であり、除算の結果生じる端数はすべて無視されます。

mtime フィールドは、アーカイブされた時点でのファイルの変更時間です。これは、stat() 関数から取得された変更時間の 8 進数値の ISO/IEC 646: 1991 規格の表現です。

chksum フィールドは、ヘッダー論理レコード内のすべてのオクテットの単純な合計の 8 進数値の ISO/IEC 646: 1991 規格の IRV 表現です。ヘッダー内の各オクテットは、符号なしの値として扱われます。これらの値が、17 ビット以上の精度を持つ、0 に初期化された符号なし整数に加算されます。チェックサムを計算する場合、chksum フィールドは、すべてスペースであるかのように扱われます。

typeflag フィールドは、アーカイブされるファイルのタイプを指定します。特定の実装によってタイプが認識されない場合、またはユーザーがそのタイプを作成するための適切な特権を持っていない場合は、そのファイルタイプがデータ論理レコードをメディア上に書き込む原因となる size フィールドの意味を持つように定義されていれば、そのファイルは通常ファイルであるかのように抽出されます。通常ファイルへの変換が発生した場合、pax は、変換が実行されたことを示すエラーを生成します。typeflag フィールドはすべて、ISO/IEC 646: 1991 規格の IRV でコード化されています。

0

通常ファイルを表します。下位互換性のために、アーカイブからファイルを抽出する場合、バイナリ 0 ('\0') の typeflag 値は通常ファイルを示すものとして認識してください。このバージョンのアーカイブファイル形式で書き込まれたアーカイブは、ISO/IEC 646: 1991 規格の IRV「0」の typeflag 値で通常ファイルを作成します。

1

以前にアーカイブされた任意のタイプの別のファイルにリンクされているファイルを表します。このようなファイルは、同じデバイスとファイルのシリアル番号を持つ各ファイルによって識別されます。リンク先の名前は、長さが 100 オクテットより短い場合、NULL 文字で終了する linkname フィールドで指定されます。

2

シンボリックリンクを表します。シンボリックリンクの内容は、linkname フィールド内に格納されます。

3,4

それぞれ、文字型特殊ファイルとブロック型特殊ファイルを表します。この場合、devmajor および devminor フィールドには、ボリューム IEEE Std 1003.1-200x で形式が指定されていないデバイスを定義する情報が含まれています。実装は、そのデバイス仕様を独自のローカル仕様にマップすることも、そのエントリを無視することもできます。

5

ディレクトリまたはサブディレクトリを指定します。ディスク割り当てがディレクトリ単位に実行されるシステムでは、size フィールドには、ディレクトリが保持できるオクテットの最大数 (もっとも近いディスクブロック割り当て単位に丸めることが可能) が含まれています。0 の size フィールドは、このような制限がないことを示します。この方法での制限をサポートしていないシステムは、size フィールドを無視するべきです。

6

FIFO 特殊ファイルを指定します。FIFO ファイルのアーカイブでは、このファイルの内容ではなく、その存在がアーカイブされます。

7

実装が何からの高性能な属性を関連付けているファイルを表すために予約されています。このような拡張機能がない実装は、このファイルを通常ファイル (タイプ 0) として扱うべきです。

A-Z

文字 A から Z までは、カスタム実装のために予約されています。その他の値はすべて、IEEE Std 1003.1-200x の将来のバージョンのために予約されています。

SUN.devmajor

pax 拡張ヘッダーのキーワードに対する Solaris 拡張機能。ファイルのメジャーデバイス番号を指定します。

write または copy モードで使用されているときに、xustar または pax 形式 (-x format を参照) が指定された場合、pax は、メジャーデバイス番号が大きすぎて 8 オクテットに収まらないファイルごとに SUN.devmajor 拡張ヘッダーレコードを含めます。

SUN.devminor

pax 拡張ヘッダーのキーワードに対する Solaris 拡張機能。ファイルのマイナーデバイス番号を指定します。

write または copy モードで使用されているときに、xustar または pax 形式 (-x format を参照) が指定された場合、pax は、マイナーデバイス番号が大きすぎて 8 オクテットに収まらないファイルごとに SUN.devminor 拡張ヘッダーレコードを含めます。

SUN.holesdata

pax 拡張ヘッダーのキーワードに対する Solaris 拡張機能。スパースファイルのデータとホールのペアを指定します。

write または copy モードで、xustar または pax 形式 (-x format を参照) が指定された場合、基盤となるファイルシステムがホールを含むファイルの検出をサポートしていて (fpathconf(2) を参照)、アーカイブされるファイル内に少なくとも 1 つのホールが存在することを報告すると、paxSUN.holesdate 拡張ヘッダーレコードを含めます。value は、次の形式の 2 つ以上の連続したエントリで構成されます。

SPACEdata_offsetSPACEhole_offset

ここで、データとホールのオフセットはそれぞれ、lseek(2)SEEK_DATASEEK_HOLE を渡すことによって返される long 値です。たとえば、次のエントリは、バイト 0、24576、および 49152 にデータのオフセットがあり、バイト 8192、32768、および 49159 にホールのオフセットがあるファイルの拡張ヘッダー内の SUN.holesdata エントリの例です。49 SUN.holesdata= 0 8192 24576 32768 49152 49159

49 SUN.holesdata= 0 8192 24576 32768 49152 49159

read または copy モードでアーカイブからファイルを抽出するとき、ファイルの拡張ヘッダー内に SUN.holesdata = のペアが見つかった場合、そのファイルは、このデータを使用して識別されたホールとともに復元されます。たとえば、上の例で示されている SUN.holesdata の場合は、バイト 0 から 8192 までがデータとして復元され、次のデータ位置 (24576) までホールが作成され、バイト 24576 から 32768 までがデータとして復元されます。以降も同様に処理されます。

X

xustar 形式 (-x format を参照) の拡張ヘッダーを指定する Solaris のカスタム typeflag 実装。typeflag 'x' 拡張ヘッダーは、ustar typeflag 'x' 拡張ヘッダーとして扱われます。

E

拡張属性ヘッダーを指定する Solaris のカスタム typeflag 実装。fsattr(7) を参照してください。

ustar 交換形式を使用してソケットをアーカイブしようとすると、診断メッセージが生成されます。その他のファイルタイプの取り扱いは実装で定義されています。

magic フィールドは、このアーカイブがこのアーカイブ形式で出力されたことを指定します。このフィールドに ustar (ISO/IEC 646: 1991 規格の IRV の 5 文字が示され、そのあとに NULL) が含まれている場合、uname および gname フィールドにはそれぞれ、ファイルの所有者とグループの ISO/IEC 646: 1991 規格の IRV 表現が (必要に応じて、収めるために切り捨てられて) 含まれています。ファイルが特権付きの、保護を保持するバージョンのユーティリティーによって復元される場合は、ユーザーおよびグループデータベースでこれらの名前がスキャンされます。見つかった場合は、uid および gid フィールド内に含まれている値ではなく、これらのファイル内に含まれているユーザー ID とグループ ID が使用されます。

cpio 交換形式

オクテット指向の cpio アーカイブ形式は、それぞれ、ファイルを説明しているヘッダー、ファイルの名前、およびファイルの内容で構成された一連のエントリです。

アーカイブは、一連の固定サイズのオクテットのブロックとして記録できます。このブロック化は、物理 I/O をより効率的にするためにのみ使用されます。ブロックの最後のグループは、常にフルサイズです。

オクテット指向の cpio アーカイブ形式では、個々のエントリ情報が次の「オクテット指向の cpio アーカイブエントリ」の表に示され、説明されている順序で並べられます。詳細は、cpio.h ヘッダーを参照してください。

ヘッダーのフィールド名
長さ (オクテット単位)
解釈
c_magic
6
8 進数
c_dev
6
8 進数
c_ino
6
8 進数
c_mode
6
8 進数
c_uid
6
8 進数
c_gid
6
8 進数
c_nlink
6
8 進数
c_rdev
6
8 進数
c_mtime
11
8 進数
c_namesize
6
8 進数
c_filesize
11
8 進数
ファイル名のフィールド名
長さ
解釈
c_name
c_namesize
パス名の文字列
ファイル名のフィールド名
長さ
解釈
c_filedata
c_filesize
データ

cpio ヘッダー

アーカイブ内のファイルごとに、前に記載したように定義されたヘッダー。ヘッダーフィールド内の情報は、8 進数として解釈される ISO/IEC 646: 1991 規格文字のストリームとして書き込まれます。これらの 8 進数は、数値の最上位桁に ISO/IEC 646: 1991 規格の IRV 0 を付加することによって、必要な長さに拡張されます。その結果が、まずオクテットのストリームの最上位桁に書き込まれます。これらのフィールドは、次のように解釈されます。

c_magic

識別する値である "070707" を含めることによって、アーカイブをトランスポータブルアーカイブとして識別します。

c_dev,c_ino

アーカイブ内のファイルを一意に識別する値が含まれています (つまり、同じファイルへのリンクでないかぎり、c_dev 値と c_ino 値の同じペアを含むファイルは存在しません)。これらの値は、未指定の方法で決定されます。

c_mode

次の表で定義されているファイルタイプとアクセス権が含まれています。

ボリューム IEEE Std 1003.1-200x に準拠するシステムでは、ディレクトリ、FIFO、シンボリックリンク、および通常ファイルがサポートされています。前に定義された追加の値は、既存のシステムとの互換性のために予約されています。追加のファイルタイプをサポートできます。このようなファイルを、ほかのシステムに転送することを目的としたアーカイブには書き込まないでください。

ファイルアクセス権の名前
内容
C_IRUSR
000400
所有者による
C_IWUSR
000200
所有者による
C_IXUSR
000100
所有者による
C_IRGRP
000040
グループによる
CW_IWFGP
000020
グループによる
CW_IXGRP
000010
グループによる
CW_IROTH
000004
その他のユーザーによる
CW_IWOTH
000002
その他のユーザーによる
CW_IXOTH
000001
その他のユーザーによる
CW_ISUID
004000
uid を設定
W_ISGID
002000
gid を設定
W_ISVTX
001000
予約済み
ファイルタイプの名前
内容
C_ISDIR
040000
ディレクトリ
C_ISFIFO
010000
FIFO
C_ISREG
0100000
標準ファイル
C_ISLNK
0120000
シンボリックリンク
C_ISBLK
060000
ブロック型特殊ファイル
C_ISCHR
020000
文字型特殊ファイル
C_ISSOCK
0140000
ソケット
C_ISCTG
0110000
予約済み
c_uid

所有者のユーザー ID が含まれています。

c_gid

グループのグループ ID が含まれています

c_nlink

ファイルを参照しているアーカイブ内のリンクの数以上の数値が含まれています。cpio アーカイブに追加するために –a オプションが使用されている場合、pax は、アーカイブの追加された部分の c_nlink 値を計算するときにアーカイブの既存の部分にあるファイルを考慮する必要はありません。また、同じ c_dev 値と c_ino 値を持つファイルがアーカイブに追加された場合は、アーカイブの既存の部分にある c_nlink 値を変更する必要もありません。

c_rdev

文字型またはブロック型特殊ファイルの、実装で定義された情報が含まれています。

c_mtime

アーカイブが作成された時点でのファイルの変更の最新の時間が含まれています。

c_namesize

パス名の長さ (終了の NULL 文字を含む) が含まれています。

c_filesize

ファイルの長さ (オクテット単位) が含まれています。これは、ヘッダー構造のあとにあるデータセクションの長さです。

cpio ファイルの名前

c_name フィールドには、ファイルのパス名が含まれています。このフィールドの長さ (オクテット単位) は、c_namesize の値です。無効なパス名を作成するファイル名がメディア上で見つかった場合、そのファイルからのデータがファイル階層に格納されるかどうかや、どのような名前で格納されるかは実装で定義されています。文字はすべて、ISO/IEC 646: 1991 規格の IRV によって表されます。実装間の移植性を最大化するために、名前は、移植可能なファイル名文字セットによって最上位ビットが 0 のオクテットとして表される文字から選択するようにしてください。実装によって、ファイル、ユーザー、グループの名前に移植可能なファイル名文字セット以外の文字を使用することがサポートされている場合は、これらの文字の、実装で定義された 1 つ以上のエンコーディングが交換のために提供されます。pax は、ボリューム IEEE Std 1003.1-200x で説明されている手順を使用してアクセスできないローカルシステム上にはファイル名を作成しません。無効なファイル名を作成するファイル名がメディア上で見つかった場合、そのファイルからのデータがローカルファイルシステム上に格納されるかどうかや、どのような名前で格納されるかは実装で定義されています。pax は、ファイルが無視されることを示すエラーを生成するかぎり、これらのファイルを無視することを選択できます。

cpio ファイルのデータ

c_name のあとに、c_filesize オクテットのデータが存在します。このようなデータの解釈は、ファイルに依存する方法で実行されます。c_filesize が 0 である場合、c_filedata にデータは含まれていません。アーカイブから復元する場合は、次のようになります。

  • ユーザーが指定したタイプのファイルを作成するための適切な特権を持っていない場合、pax はそのエントリを無視し、エラーメッセージを標準エラーに書き込みます。

  • 復元されるデータが含まれているのは通常ファイルだけです。通常ファイルが、ユーザーがフォーマット読み取りユーティリティーに課している可能性のある何らかの選択条件を満たしている場合、このようなデータは復元されます。

  • ユーザーが特定の mode フラグを設定するための適切な特権を持っていない場合、このフラグは無視されます。アーカイブ形式の一部の mode フラグは、ボリューム IEEE Std 1003.1-200x では説明されていません。実装がこれらのフラグをサポートしていない場合は、そのフラグを無視できます。

cpio の特殊なエントリ

FIFO 特殊ファイル、ディレクトリ、およびトレーラは、c_filesize を 0 にして記録されます。その他の特殊ファイルの場合、c_filesize は、ボリューム IEEE Std 1003.1-200x では指定されていません。アーカイブ内の次のファイルエントリのヘッダーは、その前のファイルエントリの最後のオクテットの直後に書き込まれます。ファイル名のトレーラを指すヘッダーは、アーカイブの最後を示します。このようなヘッダーのあとにあるアーカイブの最後のブロック内のオクテットの内容は定義されていません。

属性

属性についての詳細は、マニュアルページの attributes(7) を参照してください。

属性タイプ
属性値
使用条件
system/core-os
インタフェースの安定性
確実
標準
standards(7) を参照してください。

関連項目

chmod(1), cpio(1), ed(1), printf(1), tar(1), lseek(2), mkdir(2), stat(2), write(2), archives.h(3HEAD), attributes(7), environ(7), fnmatch(7), formats(7), fsattr(7), regex(7), standards(7)

IEEE Std 1003.1-200xISO/IEC 646: 1991ISO POSIX-2:1993 規格