名前 | 形式 | 機能説明 | オプション | オペランド | 使用法 | 使用例 | 環境 | 終了ステータス | 属性 | 関連項目 | 注意事項
cpio コマンドは、ファイルを cpio アーカイブへコピーしたり、 cpio からコピーしたりします。 cpio アーカイブは多数のファイルの容量を補います。 -i 、 -o 、 -p の各オプションは、実行する処理を選択します。 以下に、これらの各処理を説明します ( これらの処理は相互に排他的です ) 。
cpio -i (復元) は、以前に cpio -o が生成した出力を標準入力としてファイルを抽出します。 pattern に一致する名前のファイルのみが選択されます。 pattern についての詳細は、後述する「オペランド」の項および sh(1) の説明を参照してください。 抽出されたファイルは条件に応じて作成され、 以下に述べるオプションに基づいて 現在のディレクトリにコピーされます。 ファイルのアクセス権は前の cpio -o の出力ファイルと同じです。 現在のユーザーがスーパーユーザーでないかぎり、 所有者およびグループは現在のユーザーと同じです。 スーパーユーザーの場合は、前に実行した cpio -o の出力ファイルから得られる所有者およびグループと同じになります。 cpio -i が作成しようとするファイルがすでに存在していて、 さらに既存のファイルが同じか新しいバージョンのときは、 メッセージが出力されファイルは置換されませんので注意してください。 ( -u オプションは既存のファイルを無条件に置換するときに使用します )。
cpio -o ( 保管 ) は、標準入力からパス名のリストを読み込んで、 それらのファイルをパス名およびステータス情報と共に標準出力へコピーします。 出力は、デフォルトでは 512 バイト境界でブロック化されますが、 ( -B または -C オプションを使用して ) ユーザー指定のブロックサイズまたは ( CTC テープのように ) デバイスに依存したブロックサイズでの出力も可能です。
cpio -p ( パス ) は、ファイルのパス名のリストを標準入力から読み込んで、 条件に応じてファイルを作成し、以下のオプションに基づいてコピー先の directory へコピーします。
注意 : cpio は 4 バイトワードを前提としています。
文字型デバイスへ出力 ( -o ) または文字型デバイスからの入力 ( -i ) 時に、媒体の終わり ( たとえば、フロッピーディスクの終わり ) に到達し、さらに -O オプションや -I オプションが使用されていないと cpio は次のメッセージを表示します。
To continue, type device/file name when ready. |
継続するには、媒体を交換して文字型特殊デバイス名 ( たとえば /dev/rdiskette ) を入力して RETURN キーを押してください。 これは、 cpio に異なるデバイスを使用するように命令して、 処理を続行したい場合などに使います。 たとえば、 2 台のフロッピーデバイスがあるなら、フロッピー交換の間に cpio が処理を継続できるよう他方のデバイスへ切り替えたいといった場合です ( RETURN キーのみを押すと cpio は処理を終了します ) 。
以下のオプションがサポートされています。
cpio -i ( 復元 ) は、指定されたファイルを標準入力から抽出します。
cpio -o ( 保管 ) は、パス名のリストを標準入力から読み込んで、 そのファイルを標準出力へコピーします。
cpio -p ( パス ) は、ファイルのパス名のリストを標準入力から読み込みます。
上記の -o、 -i、 -p オプションのいずれかを指定した後に、 以下のオプションを任意の順序で指定できます。
コピー後に、入力ファイルのアクセス時間をリセットします。 cpio -pla ( -m との同時使用不可 ) が指定されていると、リンクされたファイルのアクセス時間はリセットされません。
ファイルをアーカイブへ追加します。 -A オプションには -O が必要です。 ファイル、フロッピーディスク、 またはハードディスクパーティションのアーカイブにのみ有効です。
各ワード内のバイト順を逆にします ( -i オプションとのみ使用可 ) 。
入出力を 5120 バイトでブロック化します。 このオプションと -C オプションを使用していないときのデフォルトのバッファサイズは 512 バイトです -B はパスには適用されません。なぜなら、 -B オプションは /dev/rmt/0m などの文字型特殊デバイスとの入出力にのみ有効だからです。
可搬性を考慮して、 ASCII 文字形式でヘッダー情報を読み書きします。 このヘッダー形式に関して ユーザー ID またはグループ ID の制限はありません。 SVR4 をベースとしたマシン間ではこのオプションを使用してください。 また種類が不明なマシン間では -H odc オプションを使用してください。 -c オプションは、 SVR4 ベースのシステムでだけサポートされている 拡張デバイス番号を使うことを意味しています。 SunOS 4 または Interactive UNIX と、 Solaris 2.6 オペーレーティング環境またはその互換バージョンとの間でファイルを転送する場合は、 -H odc を使用してください。
入出力を bufsize 単位でブロック化します。 bufsize は正の整数で置き換えられます。このオプションと -B オプションを使用していないときのデフォルトのバッファサイズは 512 バイトです ( -C は pass オプションには適用されません。 なぜなら、 -C は /dev/rmt/0m などの文字型特殊デバイスとの入出力にのみ有効だからです ) 。
必要に応じてディレクトリを作成します。
アーカイブから抽出するファイル名のリストを含む ( 1 行 1 ファイル名の ) 入力ファイル ( file ) を指定します。
pattern で指定されたものを除くすべてのファイルを抽出します ( pattern の説明については「オペランド」の項を参照してください ) 。
header 形式でヘッダー情報を読み書きします。 コピー先とコピー元のマシンが異なるタイプのときは常にこのオプション ( または -c オプション ) を使用してください ( -c と -6 は同時使用不可 ) 。 header として有効な値は以下のとおりです。
bar ヘッダーと形式。 -i オプション (読み取り専用) とだけ使用されます。
拡張デバイス番号と追加的なファイル単位のチェックサムを持った ASCII ヘッダー。 このヘッダー形式に関して ユーザー ID またはグループ ID の制限はありません。
スモールデバイス番号を持った ASCII ヘッダー。これは IEEE/P1003 データ交換標準による cpio のヘッダーと形式です。他のヘッダー形式と比べ、 最も幅広い可搬性を提供します。 POSIX に準拠したシステム間でファイル転送を行う場合の 公式の形式です ( standards(5) を参照 )。 SunOS 4 または Interactive UNIX と通信する場合には、この形式を使用してください。 このヘッダー形式では 262143 までのユーザー ID とグループ ID がヘッダーに格納できます。
tar ヘッダーとフォーマット。 このヘッダー形式では 2097151 までのユーザー ID とグループ ID がヘッダーに格納できます。
IEEE/P1003 データ交換標準の tar ヘッダーとフォーマット。 このヘッダー形式では 2097151 までのユーザー ID とグループ ID がヘッダーに格納できます。
上述の制限値を超えたユーザー ID とグループ ID を持つファイルは 60001 のユーザー ID とグループ ID で保存されます。
入力アーカイブとして file の内容を読み込みます。 file が文字型特殊デバイスで、現在の媒体をすべて読み終えた場合、 処理を続けるために媒体を交換して RETURN キーを押してください。このオプションは -i オプションとのみ使用できます。
破壊されたファイルヘッダーや I/O エラーを読み飛ばします。 破壊したりシーケンスが乱れたりした媒体からファイルをコピーしたい場合は、 このオプションにより正常なヘッダーを持つファイルだけを読むことができます ( 他の cpio アーカイブを含む cpio アーカイブの場合、エラーが発生すると cpio は終了します。 cpio は次の正常なヘッダーを検索し、 より小さいアーカイブを見つけるとそのトレーラに出合うまで読んで、 終了します ) 。 -i オプションとのみ使用できます。
可能な限り、ファイルをコピーせずにリンクします ( -p オプションとのみ使用可 ) 。
シンボリックリンクをたどります。 デフォルトは、シンボリックリンクをたどりません。
以前のファイル更新時間を取得します。 このオプションは、コピー中のディレクトリには無効です ( -a とは同時使用不可 ) 。
媒体交換時の message を定義します。オプション -O または -I を使用して、文字型特殊デバイスを指定しているときに、 媒体の終わりに達したときに出力されるメッセージを定義します。 次の媒体のシーケンス番号を表示するのに 1 つの %d が使用できます。
cpio の出力先を file に変更します。 file が文字型特殊デバイスで現在の媒体が一杯のとき処理を継続するには、 媒体を交換してキャリッジリターンを押してください。 -o オプションとのみ使用できます。
ACL を保持します。このオプションを出力用に使用した場合、 ACL が存在していれば、その他の属性とともに標準出力に書き出されます。 ACL は、特殊なファイルタイプを持つ特殊ファイルとして作成されます。 このオプションを入力用に使用した場合、 ACL は他の属性とともに標準入力から復元されます。 このオプションは特殊ファイルタイプを認識できます。 なお旧バージョンの cpio を使って ACL を持つ cpio アーカイブを復元しようとすると、エラーが発生します。 ACL がすべてのシステムにサポートされているとは 限らず、 可搬性がないため、 このオプションは -c オプションとともに使用しないでください。 可搬性を考慮して、 ASCII ヘッダーを 使用してください。
対話形式でファイル名を変更します。 キャリッジリターンだけを押すと、そのファイルを飛ばします。 "." と入力すると、元のパス名を使用します ( cpio -p では使用できません ) 。
各ファイルの所有者とグループ情報を user ID に変更します ( ID は /etc/passwd ファイル内の有効なログイン ID でなければなりません ) 。このオプションはスーパーユーザーだけが使用できます。
各ハーフワード毎にバイトを交換します。
各ワード毎にハーフワードを交換します。
入力の内容を表示します。ファイルは生成されません ( -V と同時使用不可 ) 。
無条件にコピーを実行します ( 通常、古いファイルは同一名の新しいファイルを置換しません ) 。
詳細表示。ファイル名のリストを出力します。 -t オプションと一緒に使用すると ls -l コマンドの出力のようになります ( ls(1) 参照 ) 。
詳細表示。入力または出力した各ファイルの 内容を完全に表示します。 すべてのファイル名を表示せずに cpio が動作していることをユーザーが確認するときに便利です。
UNIX System Sixth Edition 形式のアーカイブフォーマット・ファイルを処理します。 -i オプションとのみ使用できます ( -c および -H オプションと同時使用不可 ) 。
以下のオペランドを指定できます。
cpio -p の対象となる既存ディレクトリのパス名。
パターンマッチング用の表現方法を利用した式。 これはシェルがファイル名のパターンマッチングに利用する式 ( sh(1) を参照 ) や正規表現に似たものです。 以下に示すメタキャラクタが定義されています。
空の文字列を含み、あらゆる文字列と一致します。
あらゆる 1 文字と一致します。
カッコ内のいずれかの文字と一致します。 2 つの文字を - で区切って指定すると、システムのデフォルトの照合シーケンスに 従ってその 2 文字の間のすべての文字 (2 文字自身も含む ) と一致します。なお最初のカッコ [ の直後の文字が ! のとき、結果は保証されません。
否定を表します。たとえば !abc* と指定すると、文字列 abc で始まるファイル名とは一致しません。
そうしないと、現在のディレクトリ内のファイルが 使用されることがあります。
ファイルが 2 ギガバイト ( 231 バイト) 以上ある場合の cpio の動作については、 largefile(5) を参照してください。
以下に cpio の 3 つの使用例を示します。
標準入力をパイプ経由で cpio -o に渡すと、ファイルがグループ化されて 1 つのアーカイブファイル ( ../newfile ) にまとめられます。 -c オプションは ( -H オプションと同様に ) 、アーカイブファイルの他のマシンとの互換性を保証します。 ファイル名のリストをパイプ経由で cpio に渡すには、 ls(1) の代わりに find(1)、 echo(1)、 cat(1) などが使用できます。ファイルではなくデバイスへ出力先を変更することもできます。
example% ls | cpio -oc > ../newfile |
cpio -i は cpio -o の出力を使用して ( 下の例では cat を使用してパイプに渡している ) 、パターン (memo/a1、 memo/b*) に一致するファイルを抽出します。 さらに必要に応じて現在のディレクトリ下にディレクトリを作成し (-d オプション)、適切なディレクトリにファイルを格納します。 -c オプションは互換性のあるヘッダーで入力ファイルが作成されているときに 使用します。何もパターンが与えられないと、 newfile 内のすべてのファイルをディレクトリに格納します。
example% cat newfile | cpio -icd "memo/a1" "memo/b*" |
cpio -p はパイプ経由でファイル名を読み込んで、それらのファイルを別のディレクトリ ( 下の例では newdir ) へコピーまたはリンク ( -l オプション ) します。 -d オプションは必要に応じてディレクトリを作成することを意味します。 -m オプションは変更時間を取得します ( cpio に渡すパス名を作成するのに find(1) の -depth オプションを使用してください。 これによって読み取りのみが許可されたディレクトリ下にファイルを 作成しようとするときに発生する問題を排除できます ) 。 コピー先のディレクトリ newdir は必ず指定してください。
example% find . -depth -print | cpio -pdlmv newdir |
find と一緒に cpio を使用する場合、 cpio のオプションに -L を使用しているときは find のオプションに -follow を ( 逆の場合も同様 ) 使用してください。そうしないと、予期しない結果を出力します。
マルチリールアーカイブに対しては、古いボリュームのマウントを解除し、 新しいボリュームをマウントし、さらに 次の装置名を入力して ( 通常、最初のリールと同じ ) 次のテープに引き継いでください。 RETURN キーを押すと cpio が終了します。
cpio の実行に影響を与える環境変数 LC_COLLATE
、 LC_CTYPE
、 LC_MESSAGES
、 LC_TIME
、 TZ
、 NLSPATH
についての詳細は、 environ(5) を参照してください。
次の属性については attributes(5) のマニュアルページを参照してください。
属性タイプ | 属性値 |
使用条件 | SUNWcsu |
CSI | 対応済み |
ar(1), cat(1), echo(1), find(1), ls(1), setfacl(1), sh(1), tar(1), vold(1M), archives(4), attributes(5), environ(5), largefile(5), standards(5)
パス名は -H odc ヘッダー形式の場合、バイナリで 256 バイト ( デフォルト ) に制限されます。それ以外は、 1024 バイトに制限されます。
選択されたヘッダー形式に対して ユーザー ID またはグループ ID が大きすぎるファイルは エラーメッセージが出力されます。 ユーザー ID またはグループ ID のすべての値をサポートできる アーカイブを作成するには、 -H crc あるいは -c を使用してください。
スーパーユーザーだけが特殊ファイルをコピーできます。
512 バイトを 1 ブロックとみなします。
ファイルのアクセス権が 000 で、なんらかの文字データを持ち、 さらにユーザーが root でない場合、そのファイルは保管または復元されません。
ヘッダーに書かれている i ノード番号 (/usr/include/archives.h) は 2 バイトの unsigned short です。このため、この i ノード番号は 0 から 65535 までの値となります。 ハードリンクされたファイルは この i ノード番号の範囲には入りません。 これは販売元が異なるマシンの間で cpio アーカイブを移動する場合に問題となります。
ボリューム管理デーモンが稼働している場合には、 /dev/rdiskette などの通常のデバイス名を使ってフロッピー装置を アクセスできないことがあります。 詳しくは vold(1M) を参照してください。
テープからハードディスクへファイルを 取り出したりコピーしたりする場合は、 ハードディスクからテープへコピー した時と同じブロック化因数を 使用してください。 したがって、 -B オプションを指定してください。
名前 | 形式 | 機能説明 | オプション | オペランド | 使用法 | 使用例 | 環境 | 終了ステータス | 属性 | 関連項目 | 注意事項