EN JA
PAX(1)
PAX(1) FreeBSD General Commands Manual PAX(1)

名称

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

書式

pax [ -cdnvz][ -f  archive][ -s  replstr... [ -U  user... [ -G  group... [ -T [ from_date][ ,to_date]... [ pattern ...]

pax -r [ -cdiknuvzDYZ][ -f  archive][ -o  options... [ -p  string... [ -s  replstr... [ -E limit][ -U  user... [ -G  group... [ -T [ from_date][ ,to_date]... [ pattern ...]

pax -w [ -dituvzHLPX][ -b  blocksize][ [ -a][ -f archive]][ -x  format][ -s  replstr... [ -o  options... [ -U  user... [ -G  group... [ -B  bytes][ -T [ from_date][ ,to_date][ /[c][m]]... [ file ...]

pax -r -w [ -diklntuvDHLPXYZ][ -p  string... [ -s  replstr... [ -U  user... [ -G  group... [ -T [ from_date][ ,to_date][ /[c][m]]... [ file ...] directory

解説

pax ユーティリティは、アーカイブファイルの読み込み、書き込みとアーカイブファイルのメンバをリストし、ディレクトリ階層のコピーを行います。これらの操作は、特定のアーカイブ形式とは独立しており、広範囲に渡る種類のアーカイブ形式の操作をサポートしています。サポートするアーカイブ形式のリストは、 -x オプションの説明時に分かります。

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

<none>
リスト モードです。 標準入力 から読み込まれたアーカイブのメンバのリストを 標準出力 へ書き込みます。標準入力から読み込まれるファイルのパス名は、指定した pattern に一致するものが採用されます。ファイル一覧は、1 行に 1 つのファイル名を含み、1 行バッファリングを行って書き込まれます。
-r
読み込み モードです。 標準入力 からアーカイブを読み込み、指定された pattern に一致するパス名を持つアーカイブのメンバを抽出します。アーカイブ形式及びブロック化係数は、自動的に入力から決定されます。展開されるファイルがディレクトリの場合、そのディレクトリ配下に連なるファイル階層は、完全な形で展開されます。展開される全てのファイルは、現在のファイル階層からの相対ディレクトリに生成されます。展開されるファイルの所有権、アクセス時刻、更新時刻、そしてファイルモードの設定についての詳細は、 -p オプションのところで述べます。
-w
書き込み モードです。 file オペランドに含まれるアーカイブを指定したアーカイブ形式で 標準出力 に書き込みます。 file オペランドが指定されない場合には、1 行に 1 つずつコピーするファイルを記述したリストを 標準入力 から読み込みます。 file オペランドがディレクトリの場合、そのディレクトリ配下の全ファイルが作成されるアーカイブに含まれます。
-r -w
コピー モードです。ファイルオペランドで指定したファイル群を、指定した ディレクトリ にコピーします。 file オペランドが指定されない場合には、1 行に 1 つずつコピーするファイルを記述したリストを 標準入力 から読み込みます。 file オペランドがディレクトリの場合、そのディレクトリ配下のファイルがすべて、コピー先として指定したディレクトリ配下に作成されます。 コピー モードでは、ファイルがアーカイブファイルに対して書き込まれ、そして一方でそのアーカイブファイルが展開されるかのように見えます。ただし、これは、オリジナルファイルとコピーファイルの間にハードリンクが張られるかも知れない事を除きます (下記の -l オプションを参照して下さい)。

警告: コピー先の ディレクトリ には、コピー元にあるものと同じファイル名の file オペランドや file オペランドで指定されるディレクトリ階層の配下にあるファイル名などを指定してはいけません。そのような場合、 コピー の結果は予測できないものになります。

読み込み または リスト 操作において壊れたアーカイブを処理する場合、 pax は、媒体破損を可能な限り復旧し、アーカイブの中から可能な限りのファイルを処理しようと試みます (エラー時の処理の詳細は、 -E オプションを参照して下さい)。

オペランド

directory オペランドは、コピー先ディレクトリの指定を行います。 directory オペランドが存在しない場合、またはユーザが書き込みを出来ない、または指定したオペランドがディレクトリでない場合には、 pax は、0 以外のステータスでプログラムを終了します。

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

file オペランドは、コピーまたはアーカイブされるファイルのパス名を指定します。 file オペランドが 1 つもアーカイブメンバを選択しない場合には、 pax は、 標準エラー に出力される診断メッセージにこの file オペランドの内容を書き込み、0 以外のステータスでプログラムを終了します。

オプション

以下のオプションがサポートされています:
-r
アーカイブファイルを 標準入力 から読み込み、 files で指定したファイルを展開します。アーカイブされているファイルの展開に中間ディレクトリの作成が必要な場合、これらのディレクトリは、 mkdir(2) の mode 引数のところに S_IRWXU, S_IRWXG, S_IRWXO論理和 (OR) を指定して呼び出された場合と同様に作成されます。選択されたアーカイブ形式がリンクファイルの指定をサポートし、かつアーカイブ展開時にリンク不可能である場合には、 pax は、処理が終了する時に、診断メッセージを 標準エラー に書き込み、0 以外のステータスで終了します。
-w
指定したアーカイブ形式で、 標準出力 にアーカイブを書き込まれます。 file オペランドが指定されない場合には、1 行につき展開するファイルのパス名 1 つを記述したリストを 標準入力 から読み込みます。このリストの各行の先頭や末尾には<空白>を入れてはいけません。
-a
すでに存在するアーカイブファイルの後ろに、ファイル files を追加します。 -x オプションによるアーカイブ形式指定がされない場合、アーカイブ形式は、追加書き込み対象となるアーカイブファイルの形式と同一になります。アーカイブファイルに対して、そのアーカイブファイルの形式と異なる形式を用いてファイルを追加書き込みをしようとした場合、 pax は、即時に 0 以外の終了ステータスでプログラム終了します。アーカイブボリュームに最初に書き込んだブロックサイズを引き継いで、残りのアーカイブボリュームのブロックサイズとします。

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

-b blocksize
アーカイブを 書き込む 際、アーカイブへと書き込む内容を blocksize (正の整数) で指定したバイト数でブロック化します。 blocksize は、最大 64512 バイトであり 512 バイトの倍数でなければなりません。 32256 バイトより大きい blocksize は、 POSIX 規格に違反であり、すべてのシステムに移植可能となりません。 blocksize で指定する数は、その最後に k または b を付加することで、1024 (1K) または 512 の倍数として指定できます。 blocksizes に指定する数字を x で区切ることで、文字 x で区切られた数字の積がブロックサイズとして採用されます。アーカイブの書き込みのために指定するデバイスによっては、ブロックサイズに対してさらに制限がかかることがあります。ブロック化が指定されない場合には、デフォルトの blocksize は、使用される特定のアーカイブ形式に依存します。 ( -x オプションを参照して下さい)。
-c
pattern に指定されたパターンにマッチしたファイルおよび file オペランドで指定されたファイル 以外 の、全てのファイルまたはアーカイブ内メンバにマッチします。
-d
コピーまたはアーカイブされるディレクトリ、またはアーカイブメンバのディレクトリについて、指定パターンに一致した名前のディレクトリまたはアーカイブのメンバのディレクトリのみ処理し、そのディレクトリ配下にあるファイルについては処理しません。
-f archive
デフォルトで ( リスト読み込み のための) 標準入力 または ( 書き込み のための) 標準出力 に上書きされる、入力または出力アーカイブのパス名として archive を指定します。 1 つのアーカイブが複数のファイルまたは異なるアーカイブデバイスに渡っても構いません。必要があった場合、 pax は、アーカイブ中の次のボリュームのファイルまたはデバイスのパス名の入力を促します。
-i
対話的にファイルまたはアーカイブのメンバのリネームを行います。 pattern で指定した文字列パターンに一致するアーカイブのメンバまたは file オペランドの指定に一致するファイルについて、 pax は、 /dev/tty に対してファイルの名前やファイルモード、そしてファイルの更新時刻を表示して入力を促します。それから pax ユーティリティは、 /dev/tty からデータを 1 行読み込みます。その行が空行だった場合には、その時のファイルまたはアーカイブ内の格納ファイルについては、処理を行いません。その行がピリオド 1 つだけの行だった場合には、その時のファイルまたはアーカイブのメンバについては、ファイル名についての更新は行いません。それ以外の場合には、ファイル名は、その行の文字列で指定した名前に変更されます。応答を読み込むとき、 <EOF> に遭遇するか、または読み書きのために /dev/tty をオープンできないなら、 pax ユーティリティは、0 以外の終了ステータスで直ちに終了します。
-k
すでに存在するファイルに対する上書きをしません。
-l
(アルファベットの ``エル'') ファイルをリンクします。 コピー モード ( -r -w) の場合には、コピー元コピー先間には可能な限りハードリンクとなります。
-n
pattern オペランドに一致する最初のアーカイブメンバを選択します。アーカイブに格納されるファイルのうち各 pattern オペランドに一致するアーカイブメンバは、1 つしか選択されません。文字列パターンで指定した条件に合致するものがディレクトリだった場合、そのディレクトリ配下のファイルについても選択されたものとみなされます (ただし、 -d オプションが指定された場合にはこの限りではありません)。
-o options
-x で指定されるアーカイブ形式から特定される、アーカイブファイル展開/書き込みアルゴリズムの更新情報を指定します。一般的に、 options は、 name=value のように指定されます。
-p string
1 つ以上のファイルの属性操作に関する動作をオプション指定します。 string オプション引数は、ファイル展開時に、展開ファイルの属性を保存するか破棄するかを指定する文字列です。 string は、 a, e, m, o, p の 5 つの指定文字から成ります。複数の属性を同じ文字列の中につなげて記述したり、複数の -p オプションを指定したりすることもできます。これらの文字は、以下のように動作の指定を行います:
a
ファイルのアクセス時間を保存しません。デフォルトでは、ファイルのアクセスタイムは可能な限り保存されます。
e
ファイルのユーザ ID, グループ ID, ファイルモードのビット、ファイルのアクセス時間、ファイルの更新時間、これらの‘全ての属性を保存します’。本オプションは、 root または適正な権限を持ったユーザによって使用されることを目的としています。これは、アーカイブに記録されたすべてのファイルの特性を保存するためです。 e フラグは、 op フラグを要約したものです。
m
ファイルの更新時間を保存しません。デフォルトでは、ファイルの更新時間は可能な限り保存されます。
o
ユーザ ID とグループ ID を保存します。
p
ファイルモードのビットを‘保存します’。本オプションは、ファイルについて、所有者情報以外の全ての情報の保存を希望するなど適正な権限を持った ユーザ に使用されることを推奨しています。ファイルの時刻は、デフォルトで保存されますが、これを無効にしたり、展開時の時刻を用いるようにするために別に 2 つのフラグが用意されています。

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

-p eme

が指定された場合には、ファイルの更新時間は保存されます。

-s replstr
replstr で指定された置換表現にしたがって pattern オペランドまたは file オペランドで指定されたファイルまたはアーカイブのメンバの名前を更新します。この置換表現は、 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
IEEE Std 1003.2 (“POSIX.2”) 標準にて規定される、拡張 cpio 交換形式です。本形式のデフォルトブロックサイズは、 5120 バイトです。この形式で欠落するファイルの inode およびデバイス情報 (この形式でファイルのハードリンクの検出に用いられます) は、 pax にて検出され、復元されます。
bcpio
古い binary cpio 形式です。本形式のデフォルトのブロックサイズは、5120 バイトです。本形式は、ポータビリティがそれほどよくないので、別の形式が使えるならば、そちらを使用したほうがよいでしょう。この形式で欠落するファイルの inode およびデバイス情報 (この形式でファイルのハードリンクの検出に用いられます) は、 pax にて検出され、復元されます。
sv4cpio
Unix System V Release 4 (SVR4) の cpio 形式です。本形式のデフォルトのブロックサイズは、5120 バイトです。この形式で欠落するファイルの inode およびデバイス情報 (この形式でファイルのハードリンクの検出に用いられます) は、 pax にて検出され、復元されます。
sv4crc
SVR4 で使用される、ファイルの crc チェックサムつきの cpio 形式です。本形式のデフォルトのブロックサイズは、5120 バイトです。この形式で欠落するファイルの inode およびデバイス情報 (この形式でファイルのハードリンクの検出に用いられます) は、 pax にて検出され、復元されます。
tar
4.3BSD から用いられている古い BSD tar 形式です。本形式のデフォルトのブロックサイズは、10240 バイトです。本形式では、アーカイブ内に格納されるファイルのパス名は、100 文字以内でなくてはなりません。 通常 ファイル, ハードリンク, ソフト (シンボリック) リンクディレクトリ のみがアーカイブ内に格納されます (他のファイルシステムタイプについては、サポートされません)。さらに古い tar 形式との過去の互換性は、 -o オプションを用いて、アーカイブへのファイル保存時にディレクトリを無視することで実現されます。本オプションは、以下のように指定します:
-o write_opt=nodir
ustar
IEEE Std 1003.2 (“POSIX.2”) 標準にて規定される、拡張 tar 交換形式です。本形式のデフォルトのブロックサイズは、10240 バイトです。本形式のアーカイブ内に保存されるファイルのパス名は、255 文字以下の長さでなくてはなりません。ディレクトリ部分は、多くても 155 文字であり、それぞれのパスの構成要素は、100 文字未満でなければなりません。

pax ユーティリティは、指定したアーカイブ形式の制限に起因して、ファイルのアーカイブへの格納またはアーカイブからのファイルの展開が出来ない場合には、それを検出し、報告します。各アーカイブ形式を使用した場合には、使用時に更にそのアーカイブ形式の制限が課せられることがあります。典型的なアーカイブ形式の制限は、ファイルのパス名の長さ、ファイルサイズ、リンクファイルの指すファイルのパス名の長さ、そしてファイルタイプなど。 (なお、制限要素は、これらに限られるわけではありません。)

-z
書き込み (読み込み) 時のアーカイブの圧縮 (伸長) に gzip(1) を使用します。 -a とは共に使用できません。
-B bytes
単一のアーカイブボリュームに書き込まれる最大データ長を、 bytes で制限します。 bytes パラメータの末尾には、 m, k, b のいずれかの文字を付加でき、それぞれ 1048576 (1M), 1024 (1K), 512 の倍数を意味します。また、 bytes に指定する数字を x で区切ることで、文字 x で区切られた数字の積がブロックサイズとして採用されます。

警告: 最後の (または最大の) 書き込み時のオフセットに基づいた EOF をサポートするデバイス (テープや通常ファイルなどのようなもの) にアーカイブを書き込む時にのみ本オプションを使って下さい。本オプションをフロッピやハードディスクデバイスファイルに対して用いることは、推奨しません。

-D
本オプションは、 -u オプションと同様の動作を行いますが、ファイルの更新時間の代わりにファイルの inode 変更時間がチェックされるところが異なります。ファイルの inode 変更時間は、inode 情報 (ユーザ ID、グループ ID、その他) がコピー先のディレクトリ directory にあるものよりも新しいファイルを選択するのに用いられます。
-E limit
部分的に破損したアーカイブの読み込みをリトライする際、その読み込み失敗回数を limit までに制限します。 limit に正の数を指定した場合、 pax は、アーカイブの読み込みエラーからの復帰を試行し、アーカイブに格納されている次のファイルから処理を継続します。 limit が 0 の場合、 pax は、最初のリードエラーがアーカイブボリュームに発生したところで処理を停止します。 limitNONE の場合には、 pax は、読み込みエラーからの復帰を永遠に試行します。デフォルトの limit の値は、小さい正の整数 (リトライ回数) です。

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

-G group
グループ名が group で指定したものであるファイルを選択します。グループ名が # で始まる場合には、ファイルのグループ ID がそれに連なる数字のものを選択します。 '\' を用いて # をエスケープすることができます。 -G オプションは、複数指定することが可能です。この場合、最初にグループ名またはグループIDが一致したところでチェックは停止します。
-H
物理的にファイルシステムトラバースを行いながら、コマンドラインで指定されたファイルについてのみシンボリックリンクをたどります。
-L
全てのシンボリックリンクファイルをたどります。すなわち、論理的にファイルシステムトラバースを行います。
-P
シンボリックリンクをたどりません。すなわち、物理的にファイルシステムトラバースを行います。デフォルトは、このモードです。
-T [from_date][,to_date][/[c][m]]
ファイル更新時間または inode 更新時間が from_date から to_date の間 (それぞれで指定した時間も含みます) にあるファイルを選択します。 from_date のみ指定された場合には、ファイル更新時間または inode 更新時間がその時間と同じかそれより新しいもののみ選択されます。 to_date のみ指定された場合には、ファイル更新時間または inode 更新時間がその時間と同じかそれより古いもののみ選択されます。 from_dateto_date が等しい場合には、ファイル更新時間または inode 更新時間がその時間と等しいものが選択されます。

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

時間の範囲は、6 つの異なるフィールドから成り、各フィールドは、2 桁の数字を含む必要があります。その形式は、以下の通りです:

[yy[mm[dd[hh]]]]mm[.ss]

yy は、年号 (西暦) の最後の 2 桁です。最初の mm は、月 (01 から 12) です。 dd は、日付 (01 から 31 まで) です hh は、時 (00 から 23 まで) です。 2 番めの mm は、分 (00 から 59 まで) です。そして、 ss は、秒 (00 から 59 まで) です。分のフィールドの mm は、省略不可であり、他のフィールドは、オプションであり、以下の順序で付加されなければなりません:

hh, dd, mm, yy

ただし、 ss フィールドだけは、他のフィールドとは独立して付加可能です。時間の範囲は、現在時刻からの相対値で表され、

-T 1234/cm

は、本日の 12:34 PM から後のファイル更新時間、または inode 更新時間を持つファイルを選択することを表します。複数の -T による時間範囲指定を行うことが許可されており、指定した範囲のうちいずれかと一致したら、その後の範囲チェックは行いません。

-U user
ファイルの所有者名 user に基づいて、ファイル選択が行われます。所有者名が # で始まる場合には、ファイルの UID がそれに連なる数字のものを選択します。 '\' を用いて # をエスケープすることができます。複数の -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 ユーティリティは、以下の値のいずれかで終了します:
0
すべてのファイルは、正常に処理されました。
1
エラーが発生しました。

使用例

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

コマンド:

pax -v -f filename

は、 filename で指定したアーカイブに格納されているファイル内容の詳細な一覧を表示します。

以下のコマンド:

mkdir /tmp/to
cd /tmp/from
pax -rw . /tmp/to

を実行すると、 /tmp/from 配下のディレクトリ階層全体を /tmp/to にコピーします。

コマンド:

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

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

アーカイブの生成が、シグナル受信またはエラー発生により途中で異常終了した場合、 pax は、中途半端なアーカイブを生成している可能性があります。このようなアーカイブは、特定のアーカイブ形式規定を満足していない可能性があります。

コピー を行っている最中に、 pax が読み出したのと同じファイルへの書き込みを検出した場合、そのファイルは、コピーされず、診断メッセージが、 標準エラー へ書き込まれ、 pax は、0 以外の終了ステータスでプログラム終了します。

関連項目

cpio(1), tar(1)

規格

pax ユーティリティは、 IEEE Std 1003.2 (“POSIX.2”) 標準のスーパセットです。オプション -z, -B, -D, -E, -G, -H, -L, -P, -T, -U, -Y, -Z、アーカイブ形式 bcpio, sv4cpio, sv4crc, tar、および リスト モードと 読み込み モードにおける破損したアーカイブの取り扱いは、 POSIX 標準に対する拡張です。

歴史

pax は、 4.4BSD で登場しました。

作者

Keith Muller at the University of California, San Diego

バグ

pax ユーティリティは、マルチバイト文字を認識しません。
August 29, 2010 FreeBSD