名称
cpio ― ファイルアーカイブのコピーインおよびコピーアウト、ディレクトリツリーの複製
構文
cpio -o [-e extarg] [achvxABC]
cpio -i[bcdfmrstuvxBPRSU6]
[pattern...]
cpio -p [-e extarg] [adlmruvxU] directory
説明
cpio コマンドは、磁気テープ、各種デバイス、通常ファイルなどにある
ファイルのアーカイブを保存/復元します。 また、ディレクトリのツリー構造を複製して、あるディレクトリ
のファイルを別のディレクトリにコピーします。
| cpio はファイルの処理を終了すると、書き込まれたブロック数を表示します。 |
| | | cpio -o (copy out, export) 標準入力を読み込んでパス名のリストを取得し、 これらのファイルをパス名およびステータス情報とともに 標準出力に コピーします。 出力は 512 バイトの境界に達するまでパディングされます。 cpio -i (copy in, import) 以前の cpio -o の出力である
標準入力から ファイルを抽出します。 pattern... が指定されているときは、 pattern に一致する名前の付いたファイルのみが、 パターンマッチング表記の規則に従って regexp(5) 参照) 選択されます。 更に、先頭に ! があるパターンは、そのパターンの残りの部分に 一致しない 名前のみが選択されることを示します。 複数の パターン を指定することができ、パターンの追加と解釈されます。 pattern を省略した場合は、 pattern のデフォルトは * (すべてのファイルを選択) になります。 f オプションも参照してください。 抽出ファイルは、以下に示したオプションによって決定される 条件によって作成され、現在のディレクトリツリーにコピーされます。 ファイルのパーミッションは、 U オプションを使用する場合を除いては、アーカイブが cpio
-o によって作成されたときの元のファイルのパーミッションになります。
ファイルの所有者およびグループは、 ユーザーが 適切な特権を 所有している場合を除き、
現在のユーザーの所有者およびグループになります。 特権がある場合には、 cpio は以前の cpio
-o 実行時のファイルの所有者およびグループに変更を加えません。 cpio -p (passthrough) 標準入力を読み込み、ファイルのパス名のリストを取得します。このファイルは以下に述べられたオプションにより決定される条件で作成され、あて先 directory ツリーにコピーされます。 directory は存在していなければなりません。 あて先パス名は、指定した directory からの相対として解釈されます。 |
-p オプションを指定してリンクを取り扱うと、リンクだけが渡され、データブロックは一切読み書きされません。 cpio -pl を使用する際には、特にこの点に気をつける必要があります。このオプションでコマンドを使用すると、ファイルがすべてリンクとして作成され、ブロックがまったく書き込まれていないので、 cpio で "0
blocks" と表示される可能性が高くなります (-l オプションの説明は以下を参照)。
オプション
cpio では -i、 -o、
および -p の後に以下のオプションを付加することができます。
各オプションと -i、 -o、 -p の間には空白やハイフンを入れることはできません。
| a | | コピー後、入力ファイルのアクセス時刻を再設定します。 |
| b | | バイトのスワップとハーフワードのスワップをします。 -i とのみ使用できます。
詳細は、 P オプションを参照してください。 また、 s および S の各オプションも参照してください。 |
| c | | ポータビリティを保つため ASCII 文字形式でヘッダ情報を書き込みまたは読み込みます。 |
| d | | 必要に応じてディレクトリを作成します。 |
| -e extarg | | アーカイブまたはコピーするファイル のエクステント属性を処理するように指定します。 extarg は次のいずれかの値を取ります。
| warn | | エクステント属性が保存できない場合に、ファイルをアーカイブ、
またはコピーして、警告メッセージを生成します。 | | ignore | | エクステント属性を保存できない場合でも、警告メッセージを出力しません。 | | force | | エクステント属性を持つファイルはアーカイブされず、
警告メッセージが出力されます。 |
-o オプションを使用すると、 エクステント属性はアーカイブには保存されません。
また、 -p オプションでは、エクステント属性がサポート
されていないファイルシステムにファイルをコピーする場合は、 エクステント属性は保存されません。 -e の指定を省略すると、 extarg のデフォルト値として warn が使用されます。 |
| f | | pattern.... で選択されたファイルを除き、 すべてのファイルをコピーインします。 |
| h | | 通常のファイルやディレクトリの場合と同じように、
シンボリックリンクをたどります。 通常、 cpio は、リンクをアーカイブします。 |
| l | | 可能な限り、ファイルをリンク (コピーではなく) します。
このオプションにより、既存ファイルが破壊されること はありません。 -p とのみ使用します。 |
| m | | 以前のファイル修正時刻が保持されます。 このオプションにより、コピー中のディレクトリが影響を受けることはありません。 |
| r | | 対話形式でファイルの名称を変更します。 ユーザーがヌル行をタイプすると、ファイルはスキップされます。 |
| s | | ファイルの全バイトをスワップします。 -i とのみ使用します。
詳細は、 P オプションを参照してください。 また、 b と S の各オプションも参照してください。 |
| t | | 入力の目次のみをプリントします。 ファイルの作成、読み込み、またはコピーは行われません。 |
| u | | 無条件にコピーします (通常は、古いファイルが同じ名前の新しいファイルに置き換わることはありません)。 |
| v | | ファイルを処理するごとに、ファイルリストをプリントします。 t オプションとともに使用すると、
目次は次のようなフォーマットになります。 numeric-mode owner-name blocks date-time filename ここで、 numeric-mode は、ファイル特権を数値形式で表したものです。 owner-name はファイルの所有者名です。 blocks は、ファイルのサイズを 512 バイトブロック単位で表したものです。 date-time は、最後にファイルが修正された日時を表します。 filename は、アーカイブに記録されたファイルのパス名です。 |
| x | | デバイス特殊ファイルをセーブ、または復元します。
復元時にこれらのファイルを再生するために mknod() が使用されるため、 -ix と -px は
適切な特権 のあるユーザーのみが使用できます mknod(2) を参照)。 このオプションはシステム内での (バックアップ)
利用のみを想定したものです。 デバイスファイルを OS の古いバージョンまたは異なるシステムから復元することは、たいへん危険です。 cpio では、アーカイブから復元できないデバイスファイルがあります。 |
| A | | オプションのアクセス制御リストエントリーに関する警告メッセージの表示を
抑制します。 cpio は、ファイルのアクセス制御リスト内のオプションのアクセス制御リストエントリー
をバックアップしません acl(5) を参照)。
通常、警告メッセージは、オプションのアクセス制御リストエントリー
を持つファイルごとにプリントされます。 |
| B | | レコードに対して 5120 バイトごとに入出力をブロックします
(cpio -p には適用されません)。 このオプションは、磁気テープなどの可変長レコードをサポートする
デバイスを対象とするデータに限って意味があります。 |
| C | | 各ボリュームの開始時に cpio がチェックポイントを作成します。 cpio が即時報告モードを使用可能にしてストリーム
テープドライブに 書き込みを行っている際に、書き込みエラーが起きると、
通常は、戻りコード 2 で異常終了します。 このオプションを指定すると、 cpio は、自動的にチェックポイントから再開して、
現在のボリュームを再度書き込みます。 一方、 cpio がこのような方法で書き込んでいない場合に書き込みエラーが起きると、 cpio は通常、次のボリュームから続行します。
ただし、このオプションを指定すると、 ユーザーは、エラーを無視するか、
あるいは現在のボリュームへ再書き込みを行うかを選択できます。 |
| P | | c オプションを使用せずに PDP-11
または VAX システムで書き込まれたファイルを (バイトスワップして) 読み込みます。 -i と併用した場合にのみ有効です。
このモードでコピーされるファイルは変更されません。 ASCII 形式でないファイルは読み込み可能にするため、さらなる処理が必要となります。
このプログラムで常に対応できるとは限らないので、この処理をするためにはファイルの内容を知っておく必要があります。
テープ上の全バイト (ヘッダだけではなく) をスワップする場合は、 b, s,
および S の各オプションを使用できます。 一般に、テキストでは P を付けた場合、バイナリデータでは他のオプションを付けた場合に、最も処理能力が高くなります。 |
| R | | cpio が "Out of phase" になると、自動的に再同期します ( 『診断』 の項を参照)。 |
| S | | ファイル中の全ハーフワードをスワップします。 -i とのみ使用します。
詳細は、 P オプションを参照してください。 また、 b と s の各オプションも参照してください。 |
| U | | creat(2) と同じように、プロセスのファイルモード作成マスクを使用して umask(2) を参照)、 作成ファイルのモードを変更します。 |
| 6 | | UNIX の第 6 版フォーマットファイルを処理します。 -i とのみ使用します。 |
raw デバイスファイルを使って作成される cpio アーカイブは
raw デバイスファイルを使って読み込まなければならないので注意してください。
テープの終端に達すると、 cpio は、ユーザーに新しい特殊ファイルを入力するように求めて続行します。
単一または複数のメタキャラクタをシェルに展開させることなく cpio に渡したい場合には、必ず、それぞれにバックスラッシュ
(\) を前に付けてください。
-ox オプション (dev/tty03 など) で書き込まれたデバイスファイルは
HP-UX の別の処理系に持って行くことはできません。
多言語化対応
環境変数
LC_COLLATE により、ファイル名を生成するためにパターンマッチング表記を評価する際に使用される照合順序を決定します。
LC_CTYPE により、テキストをシングルバイト、またはマルチバイトのいずれの文字
(あるいはその両方) として解釈するか、およびパターンマッチング表記の文字クラス表現と照合される文字を決定します。
LC_TIME により、 -v オプションを付けてアーカイブの内容をリストする際、
日時文字列出力のフォーマットおよび内容を決定します。
LANG により、メッセージの表示に使用する言語を決定します。
現在使用している環境において、 LC_COLLATE, LC_CTYPE, または LC_TIME が指定されていない場合や、
これらが空文字列に設定されている場合には、 LANG の値がそれらの未指定あるいは空の変数のデフォルトとして使用されます。 LANG が指定されていなかったり、空文字列に設定されている場合には、デフォルトの
"C" lang(5) を参照) が LANG の値として使われます。
多言語対応変数のいずれかの設定が不適切な場合には、 cpio はすべての多言語対応変数に"C"が設定されているものとして動作します。 environ(5) を参照してください。
サポートされるコードセット
シングル/マルチバイトの文字コードセットがサポートされています。
戻り値
cpio は、次の終了コードを返します。
| 0 | | 正常終了。 転送できなかったファイルについては、標準エラーを見直します。 |
| 1 | | 同期化中のエラー。 一部のファイルが回復されていない可能性があります。 |
| 2 | | Out of phase エラー。 ファイルヘッダが破壊されているか、
フォーマットが誤っています。 |
診断
Out of phase--get help
Perhaps the "c" option should [n't] be used
cpio -i は、アーカイブファイルのヘッダを読み取れませんでした。
ヘッダが破壊されているか、 または誤ったフォーマットで書き込まれています。 R オプションが指定されていない場合、 cpio は、終了コード 2 を返します。
ファイル名がまだ表示されていない場合は、 フォーマットの問題である可能性があります。
別のヘッダフォーマット オプションを試してください。 標準フォーマットの場合はヌル、
ASCII の場合は c、 バイトスワップ フォーマットの場合は b, s, P,
または S、 UNIX 第 6 版の場合は 6 です。
これ以外の場合は、ヘッダが破壊されている 可能性があります。 cpio に自動的にファイルを再同期化させる場合は、 R オプションを使用します。
再同期化とは、 cpio がアーカイブファイルの次の正常なヘッダを探して、
ここから処理を続行することです。 cpio がフェーズの合っていない状態で再同期化を始めると、
終了コード 1 を返します。
その他の診断メッセージは、 内容を読めば分かります。
例
ディレクトリの内容をアーカイブにコピーします。
ls | cpio -o > /dev/rmt/c0t0d0BEST
次例では、ディレクトリ階層を複写します。
cd olddir
find . -depth -print | cpio -pd newdir
find . -depth -print | cpio -oB >/dev/rmt/c0t0d0BEST
は、次のようにすると、より効率よく処理することができます。
find . -cpio /dev/rmt/c0t0d0BEST
警告
業界標準に準拠し相互運用性を確保するために、 cpio は 2GB を超えるファイルのアーカイブや 60K
を超えるユーザー/グループ ID を持つファイルはサポートしていません。 60K を超えるユーザー/グループ ID を持つファイルは、現在のプロセスのユーザー/グループ
ID でアーカイブ復元されます。
cpio の出力を、 cpio の対象となっている元のファイルと同じディレクトリにある指定された cpio アーカイブファイルにリダイレクトしないでください。 これにより、データが失われる可能性があるためです。
cpio は、引き渡されたファイル名のリストから先行する ./ 文字をすべて削除します。
パス名は PATH_MAX 文字に制限されます (<limits.h> と limits(5) を参照)。 重複していないリンクファイルの数が多すぎる場合には、
プログラムはそれらを監視するメモリを使い果たしてしまいます。 それ以降、リンク情報は失われます。
適切な特権が あるユーザーだけが特殊ファイルをコピーできます。
-ox[c]
オプションを付けて HP マシンで書き込まれた cpio テープは、 x オプションをサポートしていない
(非 HP の) cpio を誤動作させることがあります。 cpio の非
HP (または、非 AT&T) バージョン の (HP) cpio が
修正され、 (HP の) cpio がそれをデバイス特殊ファイルとして認識するようになった場合、
偽のデバイスファイルが作成されることがあります。
/dev/tty にアクセスできない場合、 cpio は、障害を検出し終了します。
-pd オプションはコマンド行に入力されたディレクトリを作成しません。
-idr オプションは空のディレクトリを作成しません。
-plu オプションはファイルを既存のファイルにリンクしません。
POSIX はアーカイブの終端マーカとして TRAILER!!! という名前のファイルを定義します。したがって、その名前のファイルが cpio -o によって書き込まれるファイルのグループにある場合には、ファイルはアーカイブの終端として解釈され、残りのファイルはコピーされません。アーカイブの終端ファイル名に類似した名称をファイルに付けないようにお勧めします。
POSIX 準拠の cpio アーカイブを作成するには、 c オプションを使用しなければなりません。 POSIX 準拠の cpio アーカイブを読み込むには、 c オプションを使用しなければなりません
(b, s, S,
と 6 オプションは使用してはなりません)。 ユーザーに
適切な特権が なければ、 アーカイブを読み込む際に、 POSIX 準拠の動作を行うには U オプションも使用する必要があります。適切な特権があるユーザーは、
POSIX 準拠の動作を行う場合にこのオプションを使用しないでください。
制約
cpio に指定するパスの最後の要素として シンボリックリンクが含まれている場合、 このリンクはたどられ、 パス名の解決が続けられます。 cpio はシンボリックリンクのターゲット
(リンクそのものではなく) を使用します。
参照
ar(1), find(1), tar(1), cpio(4), acl(5), environ(5), lang(5),
regexp(5)
標準準拠
cpio: SVID2, SVID3, XPG2, XPG3