PAX(1) FreeBSD 一般コマンドマニュアル 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] ...
[ 解説 |
pax ユーティリティは、アーカイブファイルの読み込み、書きだし、アーカイブ ファイルに格納されているファイルの一覧読みだし、そしてディレクトリ階層の コピーを行います。これらの操作は指定したアーカイブフォーマットとは独立し ており、広範囲に渡る種類のアーカイブフォーマットの操作をサポートします。 pax のサポートするアーカイブフォーマット一覧は、 −x オプションの説明時に 示します。 −r および −w は、以下の pax の機能モードのいずれかを指定するのに用いられ ます。その機能モードとは、 一覧表示モード、読み込みモード、書き込みモー ド、コピーモードの 4 つです。 |
<none>
一覧表示モードです。 標準入力から読み込まれたアーカイブ内の格納 ファイルのリストを 標準出力へ書き出します。標準入力から読み込まれ るファイルのパス名は、指定した pattern に一致するものが採用されま す。ファイル一覧は 1 行に 1 つのファイル名を含み、1 行バッファリ ングを行って書き出されます。 −r −w −r −w 注意: コピー先の ディレクトリには、コピー元にあるものと同じファイ ル名の file オペランドや file オペランドで指定されるディレクトリ 階層の配下にあるファイル名などを指定してはいけません。そのような 場合、 コピーの結果は予測できないものになります。 読み込み操作や 一覧表示動作において壊れたアーカイブを処理する場合、 pax は媒体破損を可能な限り復旧し、アーカイブの中から可能な限りのファイルを処 理しようと試みます (エラー時の処理の詳細は −E オプションを参照して下さ い)。 オペランド |
directory オペランドは、コピー先ディレクトリの指定を行います。 directory オペランドが存在しない場合、もしくはユーザが書き込みを出来ない、もしくは 指定したオペランドがディレクトリでない場合には、 pax は、0 以外のステータ スでプログラムを終了します。 pattern オペランドは、アーカイブに格納されているファイルの名前を選択する ために用いられます。アーカイブメンバは、 fnmatch(3) に記述のある表記に一 致するパターンを用いて選択されます。 pattern オペランドが指定されない場合 には、アーカイブ内に格納されている全てのメンバが選択されます。 pattern が ディレクトリ名と一致する場合には、そのディレクトリ配下の階層に位置する全 てのファイルが選択されます。もしアーカイブ内に pattern オペランドの指定と 一致する名前のファイルがない場合には、 pax は 標準エラー出力に出力される 診断メッセージにこの pattern オペランドを書き出し、0 以外のステータスでプ ログラムを終了します。 file オペランドは、コピーもしくはアーカイブされるファイルのパス名を指定し ます。 file オペランドが 1 つもアーカイブメンバを選択しない場合には、 pax は 標準エラー出力に出力される診断メッセージにこの file オペランドの内容を 書き出し、0 以外のステータスでプログラムを終了します。 |
オプション
pax では、以下のオプションが使用可能です。 |
−r
アーカイブファイルを 標準入力から読み込み、 files で指定したファイ ルを展開します。アーカイブされているファイルの展開に中間ディレクト リの作成が必要な場合、これらのディレクトリは、 mkdir(2) の mode 引 数のところに S_IRWXU, S_IRWXG, S_IRWXO の 論理和を指定して呼び出さ れた場合と同様に作成されます。選択されたアーカイブ形式がリンクファ イルの指定をサポートし、かつアーカイブ展開時にリンク不可能である場 合には、 pax は、処理が終了する時に、診断メッセージを 標準エラー出 力に書き出し、0 以外のステータスで終了します。 −w −a 注意: 多くの記憶装置は追加書き込み処理に必要な操作をサポートできま せん。そのようなサポートしていないデバイスに対するアーカイブの追加 書き込みは、アーカイブの破損もしくは他の予期せぬ結果を招くことにな ります。特に、テープドライブに対する追加書き込み処理は、最もサポー トしそうにないものです。普通のファイルシステムのファイルとして、も しくはディスクデバイス上に保存されているアーカイブについては、通常 は追加書き込み処理をサポートします。 −b blocksize −c −d −f archive −i −k −l −n −o options −p string a e m o p 先述のオプション一覧にて、 ‘属性の保存’ とは、起動したプロセスの権 限に応じてアーカイブ内に保存された属性が展開ファイルに反映されるこ とを意味します。これ以外の場合は、展開されるファイルの属性は、通常 のファイル生成と同様に決定されます。 e と o のどちらも指定されない 場合、あるいはユーザ ID とグループ ID がいかなる理由にせよ保存され ない場合、 pax はファイル属性中の S_ISUID (setuid) および S_ISGID (setgid) のビットを設定しません。これらの情報の引き継ぎが何らかの理 由で失敗した場合、 pax は診断メッセージを 標準エラー出力に書き出し ます。これらの情報の保存失敗は、最終的な終了ステータスに影響します が、展開されたファイルが削除されるようなことはありません。ファイル 属性の操作に関するオプション文字が重複していたり、他のオプション文 字と処理上の競合を起こす場合には、それらのオプションの中で一番最後 に記述されたものの処理が採用されます。例えば、 −p eme が指定された場合には、ファイルの更新時間は保存されます。 −s replstr −t −u −v −x format cpio bcpio sv4cpio sv4crc tar ustar pax ユーティリティは、指定したアーカイブフォーマットの制限に起因し て、ファイルのアーカイブへの格納もしくはアーカイブからのファイルの 展開が出来ない場合には、それを検出し、報告します。各アーカイブ フォーマットを使用した場合には、使用時に更にそのアーカイブフォー マットの制限が課せられることがあります。典型的なアーカイブフォー マットの制限は、ファイルのパス名の長さ、ファイルサイズ、リンクファ イルの指すファイルのパス名の長さ、そしてファイルタイプなど。 (な お、制限要素はこれらに限られるわけではありません。) −z −B bytes 警告: 最後の (もしくは最大の) 書き込み時のオフセットに基づいた EOF をサポートするデバイス (テープや通常ファイルなどのようなもの) に アーカイブを書き出す時にのみ本オプションを使って下さい。本オプショ ンをフロッピやハードディスクデバイスファイルに対して用いることは、 推奨しません。 −D −E limit 警告: pax コマンドを、本オプションを NONE 指定して起動する場合には 十分に気をつけて下さい。というのも、処理対象となるアーカイブがぼろ ぼろに破損していた場合には、処理が無限ループに陥る可能性があるから です。 −G group −H −L −P −T [from_date][,to_date][/[c][m]] pax が 書き込みモードもしくは コピーモードの場合には、オプション フィールドとして [c][m] を指定することが可能です。このフィールド は、時間の比較に inode更新時間とファイル更新時間のどちら(あるいは両 方)を使うかを決定します。どちらも指定されない場合(デフォルト時)に は、ファイル更新時間のみが用いられます。 m は、ファイル更新時間 ( ファイルへの書き込みが最後に行われた時間) を比較対象として用いま す。 c は、inode 更新時間 (inode が最後に更新された時間。例えば所有 者、グループ、モードその他が更新された時間) を比較対象として用いま す。 c と m の両者が指定された場合、ファイル更新時間と 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 −X −Y −Z ファイルもしくはアーカイブ内に格納されたファイルについての操作を制御する オプション ( −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/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 ユーティリティは、 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 ユーティリティは、以下の値のいずれかで終了します: |
0
すべてのファイルは正常に処理されました。 1 アーカイブ読み込み中に pax がファイルを作成できない場合やリンクを張れない 場合、アーカイブに書き込み中にファイルが見つからない場合、 −p オプション 指定時にユーザ ID、グループ ID、ファイル属性を保存できない場合には、診断 メッセージが 標準エラー出力に書き出され、0 以外の終了ステータスが返却され ますが、処理自体は継続して行われます。ファイルへのリンクを作成できない場 合には、 pax はファイルの二次コピーを作成しません。 アーカイブからのファイルの展開が、シグナル受信もしくはエラー発生により途 中で異常終了した場合、 pax はユーザが指定したファイルの一部分だけを展開し て終了する可能性があります。更に、展開したファイルやディレクトリの属性が 不正であったり、アクセス時間、更新時間も不正である可能性があります。 アーカイブの生成が、シグナル受信もしくはエラー発生により途中で異常終了し た場合、 pax は中途半端なアーカイブを生成している可能性があります。このよ うなアーカイブは特定のアーカイブフォーマット規定を満足していない可能性が あります。 コピーを行っている最中に、 pax が読み出したのと同じファイルへの書き込みを 検出した場合、そのファイルはコピーされず、診断メッセージが 標準エラー出力 へ書き出され、 pax は 0 以外の終了ステータスでプログラム終了します。 バグ |
pax ユーティリティは、マルチバイト文字を認識しません。 FreeBSD 10.0 July 3, 2004 FreeBSD 10.0 |