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