PAX(1)

名称
pax - ファイルアーカイブの読み書きやディレクトリ階層のコピーを行う

書式
[-cdnvz] [-E limit] [-f archive] [-s replstr] ... [-U user] ... [-G group] ... [ -T [from_date] [,to_date]] ... [pattern ...] -r [-cdiknuvzDYZ] [-E limit] [-f archive] [-o options] ... [-p string] ... [-s replstr] ... [-U user] ... [-G group] ... [ -T [from_date] [,to_date]] ... [pattern ...] -w [-dituvzHLPX] [-b blocksize] [ [-a] [-f archive]] [-x format] [-B bytes] [-o options] ... [-s replstr] ... [-U user] ... [-G group] ... [ -T [from_date] [,to_date] [/[c][m]]] ... [file ...] -r -w [-diklntuvzDHLPXYZ] [-p string] ... [-s replstr] ... [-U user] ... [-G group] ... [ -T [from_date] [,to_date] [/[c][m]]] ... [file ...] directory

解説
pax は、アーカイブファイルの読込み、書出し、アーカイブファイル内の メンバの一覧の表示、ディレクトリ階層のコピーを行います。 pax の操作は特定のアーカイブフォーマットとは独立しており、かつ、 広範囲に渡る種類のアーカイブフォーマットの操作をサポートしています。 サポートしているアーカイブフォーマットの一覧は、後述の -x オプションの解説部分に示してあります。

-r および -w は、以下の pax の機能モードのいずれかを指定するのに用いられます。その機能モードとは、 リストモード 、 読込みモード 、 書込みモード 、 コピーモード の 4 つです。

<none>
    リストモードです。 pax は、 標準入力 から読み込んたアーカイブ内のメンバのうち、指定した pattern に一致するパス名をもつものの一覧を 標準出力 へ書き出します。 一覧には、1 行につき 1 つのファイル名が含まれ、1 行単位での バッファリングを行いながら書き出されます。

-r  読込みモードです。 pax は、 標準入力 から読み込んだアーカイブ内のメンバのうち、指定した pattern に一致するパス名をもつものを展開します。 アーカイブフォーマット及びブロック化は、入力から自動的に決定されます。 展開したファイルがディレクトリの場合、そのディレクトリを根とする ファイル階層全体が展開されます。 展開される全てのファイルは、現在のファイル階層からの相対位置に生成されます。 展開されたファイルの所有権、アクセス時刻と更新時刻、 ファイルモードの設定に関する詳細は、 -p オプションのところで議論します。

-w  書込みモードです。 pax は、 file オペランドで指定したファイルを含むアーカイブを、 指定したアーカイブフォーマットで標準出力に書き出します。 file オペランドが指定されなかった場合には、コピーするファイルのリストを 1 行につき 1 つずつ標準入力から読み込みます。 file オペランドがディレクトリの場合、そのディレクトリを根とするファイル階層全体が、 作成されるアーカイブに含められます。

-r -w
    コピーモードです。 pax は、 file オペランドで指定したファイル群を、 directory にコピーします。 file オペランドが指定されない場合には、コピーするファイルのリストを 1 行につき 1 つずつ 標準入力 から読み込みます。 file オペランドもディレクトリの場合、そのディレクトリを根とするファイル階層全体が、 コピー対象に含められます。 コピーモード の効果は、まるで、コピーするファイルがアーカイブファイルに書き込まれ、その後で 展開されたが、例外としてオリジナルファイルとコピーファイルが ハードリンクされる可能性があるというように見えます (-l オプションを参照して下さい)。

    注意: コピー先の directory には、 file オペランドと同じものや file オペランドの 1 つを根とするファイル階層内のメンバを指定してはいけません。 この状態で コピー を行うと、その結果は予測できないものになります。

読込み 操作や リスト 動作において壊れたアーカイブを処理する場合、 pax は媒体の欠陥部分からの復帰を試み、そのアーカイブの中から出来るだけ多くの アーカイブメンバを処理しようとします (エラー処理の詳細は -E オプションを参照して下さい)。

オペランド

directory オペランドで、コピー先ディレクトリのパス名を指定します。 directory オペランドが存在しない、もしくはユーザが書込みを出来ない、 もしくはディレクトリでない場合には、 pax は 0 以外の終了ステータスをもって終了します。

pattern オペランドは、アーカイブメンバのパス名を選択するために用います。 アーカイブメンバは、 fnmatch(3) に記述されているパターンマッチ表記を用いて選択されます。 pattern オペランドが指定されない場合には、アーカイブ内の全てのメンバが選択されます。 pattern がディレクトリ名と一致した場合には、そのディレクトリを根とする ファイル階層全体が選択されます。 pattern オペランドでアーカイブメンバを 1 つも選択できなかった場合には、 pax は診断メッセージとしてこの pattern オペランドを 標準エラー出力 に出力し、0 以外のステータスをもって終了します。

file オペランドには、コピーもしくはアーカイブするファイルのパス名を指定します。 file オペランドでアーカイブメンバを 1 つも選択できなかった場合には、 pax は診断メッセージとしてこの file オペランドのパス名を 標準エラー出力 に出力し、0 以外のステータスをもって終了します。

オプション

以下のオプションをサポートしています:

-r  アーカイブファイルを 標準入力 から読み込み、指定した file を展開します。 アーカイブメンバの展開のために中間ディレクトリを作成する必要がある場合には、 そのディレクトリは、 mkdir(2) の mode 引数に S_IRWXU, S_IRWXG, S_IRWXO の 論理和 を指定して呼び出された場合と同様に作成されます。 選択したアーカイブフォーマットがリンクファイルの情報を持っていて、かつ アーカイブの展開時それらのファイルをリンクできない場合には、 pax は、処理の終了時に診断メッセージを 標準エラー出力 に出力し、0 以外の終了ステータスで終了します。

-w  指定したアーカイブフォーマットで、ファイルを 標準出力 に書き出します。 file オペランドが指定されない場合には、コピーするファイルのリストを 1 行につき 1 つずつ 標準入力 から読み込みます。 このリストの各行の前後に <空白> を入れてはいけません。

-a  すでに存在するアーカイブファイルの後ろに、 ファイル を追加書き込みします。 -x オプションでアーカイブフォーマット指定がされていない場合には、 そのアーカイブで現在使われているフォーマットが選択されます。 アーカイブファイルに対して、そのアーカイブファイルのフォーマットと 異なるフォーマットを用いてファイルを追加書込みをしようとした場合、 pax は即座に 0 以外の終了ステータスで終了します。 書込み開始時のアーカイブボリュームで使用されたブロックサイズが、 その後のアーカイブボリュームに対して継続して採用されます。

    注意: 多くの記憶装置が、追加書込み処理に必要な操作をサポートできません。 そのようなデバイスにストアされているアーカイブに対する追加書込みは、 アーカイブの破損もしくはその他の予期せぬ結果を招くことになる可能性があります。 特に、テープドライブに対する追加書込み処理は、とてもサポートしそうに ありません。普通のファイルシステム内やディスクデバイス上にストアされている アーカイブの場合は、通常は追加書込み処理をサポートします。

-b blocksize
    アーカイブを 書き出す 際に、アーカイブへの毎回の書込みを、正の整数のバイト数でブロック化します。 blocksize で指定出来る値は、512 の倍数でなくてはならず、最大は 32256 です。 blocksize の末尾に k または b を付加することで、それぞれ 1024(1K) または 512 の倍数を指定することが できます。2 つの blocksize を x で区切ることで、その数字の積を表すことができます。 アーカイブデバイスによっては、ブロックサイズに対してさらに制限がかかる ことがあります。 ブロック化が指定されない場合、デフォルトの blocksize は、使用されるアーカイブフォーマットに依存します (-x オプションを参照して下さい)。

-c  pattern や file オペランドで指定されたもの 以外 のファイルもしくはアーカイブメンバ全てにマッチします。

-d  コピーまたはアーカイブされるディレクトリ型のファイル、 もしくは展開されるディレクトリ型のアーカイブメンバについて、 そのディレクトリ型のファイルまたはアーカイブメンバのみにマッチし、 そのディレクトリを根とするファイル階層にはマッチしません。

-f archive
    入力元のアーカイブもしくは出力先のアーカイブのパス名として、 デフォルトの 標準入力 (一覧表示モード および 読込みモード の場合) または 標準出力 (書込みモード ) の代りに archive を指定します。 1 つのアーカイブが複数のファイルもしくは異なるアーカイブデバイスに渡って も構いません。必要であれば、 pax は、アーカイブの次のボリュームのファイルやデバイスのパス名を入力するための プロンプトを出します。

-i  対話的にファイルやアーカイブメンバのリネームを行います。 pattern オペランドにマッチした各アーカイブメンバもしくは file オペランドにマッチした各ファイルについて、 pax は、ファイルの名前、ファイルモード、ファイルの更新時刻を入力するための プロンプトを /dev/tty に対して表示します。それから pax は、 /dev/tty からデータを 1 行読み込みます。 この行が空行だった場合には、そのファイルもしくはアーカイブメンバは スキップされます。 その行がピリオド 1 つだけの行だった場合には、そのファイルもしくは アーカイブメンバの処理は行いますが、名前の変更は行いません。 それ以外の場合には、名前はその行の内容に変更されます。 pax は、応答文字列の読み込み中に <EOF> を受けとった場合、もしくは /dev/tty の読み書きのためのオープンが出来なかった場合には、0 以外の終了ステータスで 即座に終了します。

-k  すでに存在するファイルに対する上書きをしません。

-l  ファイルをリンクします (アルファベットの ``エル'' です)。 コピー モード (-r -w) の場合には、コピー元とコピー先の間に可能な限りハードリンクが作成されます。

-n  各 pattern オペランドに最初にマッチしたアーカイブメンバを選択します。 アーカイブに格納されるファイルのうち 各 pattern に複数のアーカイブメンバがマッチすることはありません。 マッチしたものがディレクトリ型のメンバだった場合、 そのディレクトリを根とするファイル階層もマッチします (ただし、 -d オプションが指定された場合にはこの限りではありません)。

-o options
    -x で指定されるアーカイブフォーマット専用の、アーカイブファイルの 展開、書込みアルゴリズムを変更するための情報です。一般に、 options は name=value のような形式となっています。

-p string
    ファイルの属性オプションを 1 つ以上指定します。 string オプション引数は、ファイル展開時に展開ファイルの属性を保存するか 破棄するかを指定する文字列です。 この文字列は、動作を指定するための文字 a, e, m, o, p からなります。複数の属性を同じ文字列の中につなげて記述したり、複数の -p オプションを指定することもできます。 これらの文字の意味は以下の通りです:

    a   ファイルのアクセス時間を保存しません。 デフォルトでは、ファイルのアクセスタイムは可能な限り保存されます。

    e   ファイルのユーザ ID, グループ ID, ファイルモードのビット、 ファイルのアクセス時間、ファイルの更新時間の ‘全ての属性を保存します。’ このオプションは、 root もしくは適正な権限を持ったユーザが、 アーカイブ内に格納されたファイルの全ての特徴を保存するために使うことを 想定しています。 e フラグは、 o フラグと p フラグの和です。

    m   ファイルの更新時間を保存しません。 デフォルトでは、ファイルの更新時間は可能な限り保存されます。

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

    p   ファイルモードのビットを ‘保存’ します。 このオプションは、通常の権限を持った ユーザ が、ファイルの所有者情報以外の全ての情報を保存するために使うことを 想定しています。 ファイルの時刻はデフォルトでは保存されますが、 これを無効にしたり、展開時の時間を代りに使うためのフラグが 別に 2 つ用意されています。

    上記一覧において、 ‘属性の保存’ とは、起動したプロセスの権限に従ったうえで、 アーカイブ内に保存された属性が展開ファイルに反映されることを意味します。 これ以外の場合は、展開されるファイルの属性は、 通常のファイル生成と同様に決定されます。 e と o のどちらの文字も指定されない場合、あるいは ユーザ ID とグループ ID がいかなる理由にせよ保存されない場合には、 pax は、 S_ISUID (setuid) および S_ISGID (setgid) のビットを設定しません。 これらの情報の引き継ぎが何らかの理由で失敗した場合、 pax は診断メッセージを 標準エラー出力 に書き出します。 これらの情報の引き継ぎの失敗は、最終的な終了ステータスに影響しますが、 展開されたファイルが削除されるようなことはありません。 文字列オプション引数内のファイル属性を表す文字が重複していたり 競合していた場合には、それらのオプションの中で一番最後に記述されたものの処理が 採用されます。 例えば、
        -p eme
    が指定された場合には、ファイルの更新時間は保存されます。

-s replstr
    pattern オペランドもしくは file オペランドで指定されたファイルやアーカイブメンバの名前を、 replstr で指定された置換表現にしたがって更新します。この置換表現は、 ed(1) ユーティリティの正規表現の文法に準じます。 これらの正規表現の書式は、
        /old/new/[gp]
    となっています。 ed(1) の場合と同様に、 old は基本的な正規表現であり、 new はアンパサンド (&)、後方参照 \n (n の部分は数字が入ります)、 補助表現を含むことができます。 文字列 old は、 <改行> を含んでいても構いません。 ヌル文字以外のいかなる文字も、区切り文字として用いることが可能です (ここ では / を記述しています)。 また、複数の -s 表現を指定することが許されています。 これらの式は、コマンドラインで指定された順に適用され、最初の置換が 成功した時点でその置換を終了します。 省略可能なオプション g を末尾に指定した場合には、前回置換に成功した部分の直後の文字から 継続してパス名の置換を行います。そして最初に置換が失敗した時点で g オプションの処理を停止します。 省略可能なオプション p を末尾に指定した場合には、成功した置換の最終結果が 標準エラー出力 に以下のフォーマットで書き出されます:
        <original pathname> >> <new pathname>
    空の文字に置換されたファイル名もしくはアーカイブメンバ名は、 処理対象として選択されず、スキップされます。

-t  pax が読み込んだりアクセスしたりした全てのファイルやディレクトリのアクセス時間を、 pax が読んだりアクセスしたりする前の時間に再設定します。

-u  ファイルが、既に存在する同じ名前を持つファイルやアーカイブメンバよりも 古い (ファイル更新時刻が古い) 場合に、そのファイルを無視します。 読込み処理 においては、ファイルシステム上にあるファイルと同じ名前をもつ アーカイブメンバは、そのアーカイブメンバがファイルよりも新しい場合に 展開されます。 書込み処理 においては、アーカイブメンバと同じ名前をもつファイルシステム上のファイルは、 そのアーカイブメンバがファイルよりも新しい場合に書き込まれます。 コピー処理 においては、コピー元のファイル階層の方が新しい場合に、 コピー先のファイル階層が、コピー元のファイルで置きかわるか コピー元のファイルへのリンクに置きかわります。

-v  リスト表示処理 において、 ls(1) ユーティリティを -l オプションつきで実行した時の表示と同じ形式を用いて、 アーカイブ内容の一覧を生成します。 前方のアーカイブメンバへのハードリンクを表すパス名の場合は、 出力はフォーマットは
        <ls -l listing> == <link name>
    のようになります。シンボリックリンクを表すパス名の場合は、
        <ls -l listing> => <link name>
    のようになります。 ここで <ls -l listing> の箇所は、 ls(1) ユーティリティを -l オプションつきで実行した場合の出力形式になります。 他の動作モード (読込みモード、書込みモード、そしてコピーモード) の場合には、ファイルやアーカイブメンバの処理に入るとすぐに、 それらのパス名が末尾に <改行> をつけずに 標準エラー出力 に書き込まれ、フラッシュされます。 末尾につく <改行> がバッファリングされることはなく、ファイルの読込みや書込みが終った 直後にのみ書き出されます。

-x format
    出力アーカイブのフォーマットを指定します。デフォルトフォーマットは、 ustar フォーマットです。 pax は、現在以下のフォーマットをサポートしています:

    cpio
        p1003.2 standard で規定されている、拡張 cpio インタチェンジフォーマットです。 このフォーマットのデフォルトブロックサイズは、5120 バイトです。 ファイルの inode およびデバイス情報 (このフォーマットで、 ファイルのハードリンクの検出に用いられます) は、 このフォーマットでは切り詰められる可能性がありますが、これらは pax で検出され、復元されます。

    bcpio
        古い binary cpio フォーマットです。 このフォーマットのデフォルトのブロックサイズは、5120 バイトです。 このフォーマットのポータビリティにはそれほどよくはないので、別のフォーマットが 使えるならば、そちらを使用したほうがよいでしょう。 ファイルの inode およびデバイス情報 (このフォーマットで、 ファイルのハードリンクの検出に用いられます) は、 このフォーマットでは切り詰められる可能性がありますが、これらは pax で検出され、復元されます。

    sv4cpio
        AT&T UNIX の cpio フォーマットです。 このフォーマットのデフォルトのブロックサイズは 5120 バイトです。 ファイルの inode およびデバイス情報 (このフォーマットで、 ファイルのハードリンクの検出に用いられます) は、 このフォーマットでは切り詰められる可能性がありますが、これらは pax で検出され、復元されます。

    sv4crc
        AT&T UNIX で使用される、ファイルの crc チェックサムつきの cpio フォーマットです。 このフォーマットのデフォルトのブロックサイズは 5120 バイトです。 ファイルのハードリンクの検出に用いられます) は、 このフォーマットでは切り詰められる可能性がありますが、これらは pax で検出され、復元されます。

    tar 4.3BSD で用いられている古い BSD tar フォーマットです。 このフォーマットのデフォルトのブロックサイズは、10240 バイトです。 このフォーマットで保存されるパス名は 100 文字以内でなければなりません。 通常ファイル、ハードリンク、 シンボリックリンク、ディレクトリ だけがアーカイブされます (他のファイルシステムタイプは、サポートしていません)。 さらに古い tar フォーマットとの下位互換は、アーカイブを書く時に -o オプションを用いてディレクトリを無視させることで実現できます。 このオプションは、以下のように指定します:
            -o write_opt=nodir

    ustar
        p1003.2 standard で規定されている、 拡張 tar インタチェンジフォーマットです。 このフォーマットのデフォルトのブロックサイズは、10240 バイトです。 このフォーマットで保存されるパス名は 250 文字以内でなければなりません。

    pax は、各アーカイブフォーマット特有の制限よってファイルの格納や展開が 出来ない場合には、それを検出して報告します。 各アーカイブフォーマットには、使用時に制限が追加して課せられることがあります。 アーカイブフォーマットの典型的な制限としては、ファイルのパス名の長さ、 ファイルサイズ、リンクのパス名の長さ、ファイルタイプなどがあります (制限要素はこれらだけに限られるわけではありません)。

-z  アーカイブファイルの読み書き時に gzip(1) 圧縮を利用します。

-B bytes
    アーカイブボリューム 1 つに書き出される最大バイト数を、 bytes に制限します。 bytes パラメータの末尾に、 m, k, b を付加することで、それぞれ 1048576 (1M), 1024 (1K), 512 の倍数を指定することが できます。また、2 つの bytes を x で区切ることで、その数字の積を表すことができます。

    警告: 最後の (もしくは最大の) 書込み位置で EOF の read 状態が決定するデバイス (テープや通常ファイルなどのようなもの) にアーカイブを書き出す時にだけ、 このオプションを使って下さい。 このオプションをフロッピーやハードディスクデバイスファイルに対して 使用するとは、推奨しません。

-D  このオプションは、 -u オプションと似た動作をしますが、ファイルの更新時間のかわりにファイルの inode 変更時間がチェックされるところが異なります。 ファイルの inode 変更時間は、inode 情報 (ユーザ ID、グループ ID、その他) が コピー先の directory にあるものよりも新しいファイルを選択するのに利用できます。

-E limit
    部分的に破損したアーカイブの読込みのリトライを行う際に、読込み失敗回数を limit に制限します。 limit に正の数を指定した場合、 pax はアーカイブの読込みエラーからの復帰を試み、アーカイブ内のその次に 格納されているファイルから処理を継続します。 limit が 0 の場合、 pax は最初のリードエラーがアーカイブボリュームに発生したところで処理を停止します。 limit が NONE の場合には、読込み失敗からの復帰を永遠に試します。 リトライ回数 limit のデフォルト値は、小さい正の整数です。

    警告: このオプションに NONE を指定して pax を起動する場合には、十分に気をつけて下さい。というのも、 アーカイブにかなりひどい破損がある場合には、処理が無限ループに陥る 可能性があるからです。

-G group
    グループ名 group 、または # で始まる場合にはその数値の gid を用いてファイルを 1 つ選択します。 # をエスケープすることができます。 -G オプションは複数指定することが可能であり、 一致するグループがあれば、その時点でチェックが終了します。

-H  物理的にファイルシステムを辿るいっぽうで、コマンドライン上で指定された シンボリックリンクだけはその先を追います。

-L  論理的にファイルシステムを辿り、 全てのシンボリックリンクの先を追います。

-P  シンボリックリンクを追いかけず、物理的にファイルシステムを辿ります。 デフォルトはこのモードです。

-T [from_date][,to_date][/[c][m]]
    ファイルの更新時間もしくは inode の更新時間が from_date から to_date の間 (それぞれで指定した時間も含みます) にあるファイルを選択します。 from_date のみ指定された場合には、ファイルの更新時間もしくは inode の更新時間が その時間と同じかそれより新しいものだけが選択されます。 to_date のみ指定された場合には、ファイルの更新時間もしくは inode の更新時間が その時間と同じかそれより古いものだけが選択されます。 from_date と to_date が等しい場合には、ファイルの更新時間もしくは inode の更新時間が その時間と等しいものが選択されます。

    pax が 書込みモード もしくは コピーモード の場合には、オプションフィールドとして [c][m] を指定することが可能で、これを用いてファイルのどちらの時間 (inode 更新時間、ファイル更新時間のどちらか、もしくは両方) を使うかを 決定することができます。 どちらも指定されない場合には、デフォルトとしてファイルの更新時間だけが 用いられます。 m は、ファイルの更新時間 (ファイルへの書込みが最後に行われた時間) による 比較を意味します。 c は、inode 更新時間 (inode が最後に更新された時間。例えば所有者、グループ、 モードその他が更新された時間) による比較を意味します。 c と m の両方が指定された場合、ファイル更新時間と inode 更新時間の両方が比較対象 になります。 inode 更新時間の比較は、最近属性が変更されたファイルを選択する場合や、 最近作成されてそのファイル更新時間がより古いものに再設定されたファイル (アーカイブからファイルを展開する時に、ファイルの更新時間を保存して 展開した場合など) を選択する場合に便利です。 ファイルの両方の時刻を併用した時間比較は、 pax で時間を基準にしたインクリメンタルアーカイブ (指定した期間内に更新された ファイルだけをアーカイブすること) を作成する場合に便利です。

    時間の範囲は、6 つの異なるフィールドから成り、各フィールドは 2 桁の数字を 含む必要があります。 その形式は以下の通りです:
        [[[[[cc]yy]mm]dd]hh]mm[.ss]
    ここで cc は西暦の最初の 2 桁 (世紀) で、 yy は西暦の最後の 2 桁で、 最初の mm は月 (01 から 12 まで)、 dd は日 (01 から 31 まで)、 hh は時 (00 から 23 まで)、 2 番目の mm は分 (00 から 59 まで)、 ss は秒 (00 から 61 まで) です。 分のフィールドである mm だけが省略不可であり、他のフィールドはそのシステムの現在の値がデフォルトに なります。 ss フィールドだけは、他のフィールドとは独立して付加することができます。 世紀が指定されていない場合、年が 69 から 99 の間の場合には 1900 がデフォルト になり、0 から 68 の間の場合には 2000 になります。 時間の範囲は、現在時刻からの相対値なので、
        -T 1234/cm
    は本日の午後 12:34 から後のファイル更新時間、もしくは inode 更新時間を持つ ファイルを選択することを表します。 複数の -T による時間範囲指定を行うことが許されており、指定した範囲のうちいずれかと 一致した場合は、その後の範囲チェックは行いません。

-U user
    ファイルの所有者名 user 、または # で始まる場合にはその数値の uid を用いてファイルを 1 つ選択します。 # をエスケープすることができます。 -U オプションは複数指定することが可能であり、その指定の中で最初にユーザが 一致した場合には、その時点でチェックが終了します。

-X  パス名で指定されたファイル階層を辿る場合に、異なるデバイス ID を 持つディレクトリへは下りていきません。 デバイス ID に関する詳細は stat(2) の st_dev フィールドを参照して下さい。

-Y  このオプションは、 -D オプションと動作が似ていますが、全てのファイル名更新が終了した後に、 生成されたパス名を用いて inode 更新時間をチェックするところが異なります。

-Z  このオプションは、 -u オプションと動作が似ていますが、全てのファイル名更新が終了した後に、 生成されたパス名を用いてファイル更新時間をチェックするところが異なります。

ファイルもしくはアーカイブメンバの名前を制御するオプション (-c, -i, -n, -s, -u, -v, -D, -G, -T, -U, -Y, -Z) は、以下のように働きます。

読込み 処理におけるファイル展開時には、アーカイブメンバは -c, -n, -u, -D, -G, -T, -U オプションで修飾された、ユーザが指定したパターンオペランドだけに基づいて ‘選択’ されます。 それから、それらのファイルの中から -s および -i オプションで、選択されたファイル名をこの順で修正します。 それから、確定したパス名をもとにして -Y および -Z オプションが適用されます。 最後に、 -v オプションで、変更後の名前が出力されます。

書込み 操作中のファイルのアーカイブ時や コピー 操作中のファイルのコピー時には、アーカイブメンバは -n, -u, -D, -G, -T, -U オプションで修飾された、ユーザが指定したパターンオペランドだけに基づいて ‘選択’ されます (-D オプションについては、コピー処理を行う場合にのみ適用されます)。 それから、それらのファイルの中から -s および -i オプションで、選択されたファイル名をこの順で修正します。 それから、 コピー 処理の場合は、確定したパス名をもとにして -Y および -Z オプションが適用されます。 最後に、 -v オプションで、変更後の名前が出力されます。

-n オプションと一緒に -u または -D オプションのどちらか、もしくは両方が指定された場合には、そのファイルが 比較対象のファイルより新しくなければ、そのファイルは選択されたとは みなされません。

使用例
コマンド:
    pax -w -f /dev/rst0 .
は、カレントディレクトリの内容を /dev/rst0 にコピーします。

コマンド:
    pax -v -f filename
は、 filename のファイル内に格納されているアーカイブの詳細な一覧を表示します。

以下のコマンド:
    mkdir newdir
    cd olddir
    pax -rw . newdir
を実行すると、 olddir 配下のディレクトリ階層全体を newdir にコピーします。

コマンド:
    pax -r -s ',^//*usr//*,,' -f a.pax
は、アーカイブ a.pax からデータを読込み、アーカイブ中の ``/usr'' 配下の全ファイルを カレントディレクトリからの相対位置に展開します。

コマンド:
    pax -rw -i . dest_dir
は、 カレントディレクトリから dest_dir ディレクトリへ、ファイルを対話的に選択しながらコピーします。

コマンド:
    pax -r -pe -U root -G bin -f a.pax
は、アーカイブ a.pax 中に格納されているファイルのうち、所有者が root でグループが bin である全てのファイルを、すべてのファイル属性を保存して展開します。

コマンド:
    pax -r -w -v -Y -Z home /backup
は、コピー先ディレクトリ /backup にあるファイルのうち、コピー元ディレクトリ home 以下に存在する同名のファイルより (inode 更新時刻もしくはファイル更新時刻が) 古いものを更新 (および一覧表示) します。

規格
pax ユーティリティは、 p1003.2 標準のスーパーセットです。 オプション -B, -D, -E, -G, -H, -L, -P, -T, -U, -Y, -Z と、アーカイブ形式 bcpio, sv4cpio, sv4crc, tar および、 一覧表示 モードおよび 読込み モードにおける破損したアーカイブのハンドリングは、 POSIX 標準に対する拡張機能です。

作者
Keith Muller at the University of California, San Diego

エラー
pax は、以下の値のいずれかで終了します:

0   すべてのファイルは、正常に処理された。

1   エラーが発生した。

アーカイブの読込み中に pax がファイルを作成できない場合やリンクを張れない場合、 アーカイブの書込み時にファイルが見つからない場合、 -p オプション指定時にユーザ ID やグループ ID やファイル属性を保存できない 場合には、診断メッセージが 標準エラー出力 に書き出され、0 以外の終了ステータスが返却されますが、処理自体は継続して 行われます。 ファイルのリンクを作成できない場合であっても、 pax はファイルの二次コピーを作成することはありません。

アーカイブからのファイルの展開が、シグナル受信もしくはエラー発生により 途中で終了した場合には、 pax はユーザが要求したファイルの一部分だけを展開して終了する可能性があります。 さらに、展開したファイルやディレクトリの属性が不正であったり、アクセス時間、 更新時間も間違っている可能性があります。

アーカイブの生成が、シグナル受信もしくはエラー発生により 途中で終了した場合には、 pax はそのアーカイブフォーマットの規定を満たしていない可能性のあるアーカイブ を一部分だけ中途半端にしか生成していない可能性があります。

コピー を行っている最中に、ファイルの上書きをしようとしていることを pax が検出した場合には、そのファイルはコピーされず、診断メッセージが 標準エラー出力 へ書き出され、 pax は終了時に 0 以外の終了ステータスで終了します。