CPIO(1L)

名称
cpio - アーカイブファイルへのファイルのコピーや、アーカイブファイルからファイルへのコピーをおこなう

書式
cpio {-o|--create} [-0acvABLV] [-C bytes] [-H format] [-M message] [-O [[user@]host:]archive] [-F [[user@]host:]archive] [--file=[[user@]host:]archive] [--format=format] [--message=message] [--null] [--reset-access-time] [--verbose] [--dot] [--append] [--block-size=blocks] [--dereference] [--io-size=bytes] [--help] [--version] < name-list [> archive] cpio {-i|--extract} [-bcdfmnrtsuvBSV] [-C bytes] [-E file] [-H format] [-M message] [-R [user][:.][group]] [-I [[user@]host:]archive] [-F [[user@]host:]archive] [--file=[[user@]host:]archive] [--make-directories] [--nonmatching] [--preserve-modification-time] [--numeric-uid-gid] [--rename] [--list] [--swap-bytes] [--swap] [--dot] [--unconditional] [--verbose] [--block-size=blocks] [--swap-halfwords] [--io-size=bytes] [--pattern-file=file] [--format=format] [--owner=[user][:.][group]] [--no-preserve-owner] [--message=message] [--help] [--version] [pattern...] [< archive] cpio {-p|--pass-through} [-0adlmuvLV] [-R [user][:.][group]] [--null] [--reset-access-time] [--make-directories] [--link] [--preserve-modification-time] [--unconditional] [--verbose] [--dot] [--dereference] [--owner=[user][:.][group]] [--no-preserve-owner] [--help] [--version] destination-directory < name-list

解説
本マニュアルは、GNU 版の cpio について説明します。 cpio は、cpio 形式もしくは tar 形式のアーカイブファイルに格納されたファイルを 取り出したり、その逆を行ったりします。アーカイブファイルの中には、 ファイルそのものの情報の他に、それら個々のファイルについての所有者や属性 その他の情報を格納してあります。アーカイブファイルは、ディスク上のファイルで も、テープ上に格納してあっても、もしくはパイプであっても構いません。 cpio は、3 つの操作モードを持っています。

コピーアウトモードでは、 cpio はファイルをアーカイブファイルにコピーします。cpio は、標準入力から ファイル名のリストを1行ずつ読み込み、標準出力にそのファイルのアーカイブを 書き出します。ファイルリストの作成には、 find コマンドが多く使われます。 find コマンドに、-depth オプションを付加してやって、ディレクトリの属性に よって読み込み不可であったり、検索が出来なかったりする問題を最小限に抑える ようにして下さい。

コピーインモードでは、 cpio はファイルをアーカイブファイル、もしくはアーカイブの内容のリストから コピーします。cpio は、アーカイブを標準入力から読み込みます。オプションで ないコマンドラインの引数は、すべてシェルによって展開される文字列として 解釈されます。これは、アーカイブ内のファイル名が、この文字列によって 指定されるパターンにマッチする場合にのみそのファイルを展開することを意味 します。また、シェルでの解釈にかかわらず、ファイル名の先頭に`.'を含む 場合には、パターンの最初にワイルドカードがある場合にパターン一致します。 そして、ファイル名に `/' を含む場合にも、ワイルドカードによる一致が期待 できます。パターンが指定されない場合には、全てのファイルが展開対象と なります。

コピーパスモードでは、 cpio はファイルをあるディレクトリから別のディレクトリにコピーします。実際には、 アーカイブファイルを用いて、コピーアウトモードとコピーインモードを 組み合わせて実行するような形になります。 cpioは、コピーするファイルリストを標準入力から受けとります。これらの ファイルのコピー先のディレクトリについては、オプション以外の引数で与えられ ます。

cpio は、 binary, old ASCII, new ASCII, crc, HPUX binary, HPUX old ASCII, old tar, POSIX.1 tar の各形式のアーカイブフォーマットをサポートします。 binary フォーマットは、異なるマシンアーキテクチャの間で アーカイブフォーマットが異なるため、ほとんど使われません。 old ASCII フォーマットは、異なるマシンアーキテクチャの間でのアーカイブの 互換性は保たれますが、65536 個を超える i-node を備えるシステムで使われる ことを想定してません。 new ASCII フォーマットは、異なるマシンアーキテクチャの間でのアーカイブの 互換性は保たれます。old ASCII フォーマットのように、ファイルシステムの サイズの制限はありませんが、全てのバージョンの cpio でこの形式をサポートするわけではありません。現状でこのフォーマットを サポートする cpio は、GNU cpio と、SVR4 の cpio のみです。 crc フォーマットは、new ASCII フォーマットと似てますが、アーカイブ作成時に cpio が各ファイルについてチェックサムを計算し、アーカイブ内に含めるところが 異なります。このチェックサムは、アーカイブからファイルを取り出す時の ベリファイに使用されます。 HPUX フォーマットは、デバイスファイルを格納する形式が他の cpio と異なる HPUX の cpio 形式との互換性を持たせるために存在します。

tar フォーマットは、 tar との互換性を持たせるために存在します。tar フォーマットでは、アーカイブ されるファイル名としては、100 文字を超えるものは使えません。そして、 ブロックデバイス特殊ファイルやキャラクタデバイス特殊ファイルをアーカイブする ことも出来ません。 POSIX.1 tar フォーマットは、アーカイブされるファイル名としては、255 文字を 超えるものは使えません。(ちょうどその場所に、"/" が含まれる場合は除きます)。

デフォルトでは、 cpio は古い cpio との互換性のためにバイナリフォーマットアーカイブを作成します。 アーカイブを展開する場合には、 cpio は自動的に読み込まれたアーカイブの種類、そして異なるバイトオーダのマシンで 作成されたかどうかを判断します。

ある cpio のオプションは、操作モードを指定します。どのオプションがどのモードに 対応するかについては、形式のセクションを見て下さい。

  オプション

-0, --null
    コピーアウトおよびコピーパスモードにおいて、改行のかわりにヌル文字で 終了するファイル名のリストを、読み込みます。これは、改行を含むファイル名を持つ ファイルをアーカイブできるようにするためです。 GNU find を使うことで、ヌル文字で終了するファイル名のリストを生成することが出来ます。

-a, --reset-access-time
    ファイルを読み込んだ後に、それらのファイルのアクセスタイムの再設定を 行います。これは、これらのファイルがその時点で読み込まれたもののように見え ないようにするためです。

-A, --append
    すでに存在するアーカイブファイルに追加書込みをします。本オプションを使う ためには、 は、 -O もしくは -F (--file) オプションにて指定した名前のアーカイブファイルがディスク上に存在する必要 があります。

-b, --swap
    コピーインモードにおいて、データ中の 1 ワード (32 ビット) データの 上下 16 ビットを入れ換え、1 ハーフワード (16 ビット) の上下 8 ビットを 入れ換えます。本オプションは、 -sS と同等です。 本オプションは、ビッグエンディアンマシンとリトルエンディアンのマシンの間で 32 ビット整数を変換するために用います。

-B  I/O ブロックサイズを 5120 バイトに設定します。ブロックサイズの初期値は 512 バイトです。

--block-size=BLOCK-SIZE
    I/O ブロックサイズを BLOCK-SIZE * 512 バイトに設定します。

-c  アーカイブ形式として、old ASCII フォーマットを用います。

-C IO-SIZE, --io-size=IO-SIZE
    I/O ブロックサイズを IO-SIZE で指定しただけのバイト数に設定します。

-d, --make-directories
    必要に応じてディレクトリを作成します。

-E FILE, --pattern-file=FILE
    コピーインモードにおいて、ファイル名を特定するためのパターン指定、 もしくはファイルリストをファイル名 FILE から読み出します。ファイル名 FILE で 特定できるファイルに記述された各行は、 cpio のオプション以外の文字列で指定されたものとして扱われます。

-f, --nonmatching
    与えられたパターンのいずれにも一致しないファイルのみ扱います。

-F, --file=archive
    標準入力もしくは標準出力のかわりに、指定されたアーカイブファイルを用います。 他のマシンのテープドライブをアーカイブファイルとして扱う場合には、 `HOSTNAME:' で始まるファイル名を使用して下さい。ホスト名は、 コマンドを起動するユーザが、テープドライブ使用できるホストの名前で あることが必要です。典型的には、そのユーザの `~/.rhosts' エントリに エントリが存在するマシンであることが多いようです。

--force-local
    -F, -I, -O オプションを用いた場合に、コロン文字を含むファイル名をローカルファイル名 とみなして扱います。通常、コロン文字は、リモートホスト名とその上の ローカルファイル名を区切る場合に使用されます。

-H FORMAT, --format=FORMAT
    アーカイブフォーマットとして、FORMAT のものを用います。FORMAT の部分に 指定出来る文字列を以下に示します。これらの名前は、すべて大文字の場合でも 認識されます。コピーインモードでのデフォルトは、入力ファイルの内容から 自動的にアーカイブフォーマットを判定するもので、コピーインモードでは、 "bin" フォーマットです。

    bin binary フォーマットです。ほとんど使われません。

    odc old ASCII (old (POSIX.1) portable) フォーマットです。

    newc
        new ASCII (new (SVR4) portable) フォーマットです。

    crc crc フォーマットです。

    tar (old) tar フォーマットです。

    ustar
        POSIX.1 tar フォーマットです。GNU tar アーカイブも取り扱うことが出来ます。POSIX.1 tar と GNU tar は、よく似て いますが、同じではありません。

    hpbin
        HPUX の cpio で使用されている、古い binary フォーマットです。(他の cpio とは 異なる形式で、デバイスファイルを保存します)。

    hpodc
        HPUX の cpio で使用されている portable フォーマットです (他の cpio とは 異なる形式で、デバイスファイルを保存します)。

-i, --extract
    コピーインモードで走行します。

-I archive
    標準入力のかわりに、指定されたアーカイブファイル名を用います。他のマシン のテープドライブをアーカイブファイルとして扱う場合には、`HOSTNAME:' で 始まるファイル名を使用して下さい。ホスト名は、コマンドを起動するユーザが、 テープドライブ使用できるホストの名前であることが必要です。典型的には、 そのユーザの `~/.rhosts' エントリにエントリが存在するマシンであることが 多いようです。

-k  無視されます。他のバージョンの cpio との互換性を保つためにのみ存在します。

-l, --link
    ファイルをコピーするかわりに、可能な限りリンクを張ります。

-L, --dereference
    シンボリックリンクを参照しません。シンボリックリンクファイルをコピー するかわりに、シンボリックリンクファイルの指す実体のファイルをコピーします。

-m, --preserve-modification-time
    コピー先のファイル生成時に、コピー元のファイルの更新時刻を保持します。

-M MESSAGE, --message=MESSAGE
    バックアップ媒体 (テープやフロッピーディスクなど) のボリューム終端まで 到達した場合に、MESSAGE で指定された文字列を出力します。この指定をする ことで、ユーザに新しい媒体の挿入指示を出すことが可能になります。MESSAGE で指定される文字列に"%d"が含まれる場合には、"%d" 文字列は、現在の媒体通番 (1 からはじまります) に置き換えられます。

-n, --numeric-uid-gid
    バーボーズモードで内容のリストを出す場合に、UID および GID を、その ID の 対応する名前に変換せずに、数字で表示します。

--no-preserve-owner
    コピーインモードおよびコピーパスモードにおいて、ファイルの所有者を変更し ません。これは、展開後のファイルの所有者は、実際にファイルの展開を行っている ユーザとなることを示します。このオプションは、スーパユーザ以外の ユーザが使用する場合にはデフォルトで有効になります。これは、System V のユーザが、誤ってファイルの所有権を手放さないようにするためです。

-o, --create
    コピーアウトモードで走行します。

-O archive
    標準出力のかわりに、指定したアーカイブファイルを用います。他のマシン のテープドライブをアーカイブファイルとして扱う場合には、`HOSTNAME:' で 始まるファイル名を使用して下さい。ホスト名は、コマンドを起動するユーザが、 テープドライブ使用できるホストの名前であることが必要です。典型的には、 そのユーザの `~/.rhosts'エントリにエントリが存在するマシンであることが 多いようです。

-p, --pass-through
    コピーパスモードで走行します。

-r, --rename
    対話的にファイル名を変更します。

-R [user][:.][group], --owner [user][:.][group]
    コピーアウトモードおよびコピーパスモードにおいて、全ての生成ファイルの 所有権を指定したユーザ、グループに設定します。ユーザもしくはグループの どちらか、もしくは両方とも指定される必要があります。グループの指定が されずに ":" もしくは "." セパレータが指定された場合には、ユーザの ログイングループがグループとして設定されます。スーパーユーザのみが ファイルの所有権を変更することが可能です。

-s, --swap-bytes
    コピーインモードにおいて、ファイル中のデータの 16 ビットの上位 8 ビットと下位 8 ビットを入れ換えます。

-S, --swap-halfwords
    コピーインモードにおいて、ファイル中のデータの 32 ビットの上位 16 ビットと下位 16 ビットを入れ換えます。

-t, --list
    入力ファイル名の一覧を出力します。

-u, --unconditional
    古いファイルと新しいファイルの置換えを問い合わせることなく、全ての ファイルを上書きします。

-v, --verbose
    処理されたファイル名を表示します、 -t オプションが同時に指定された場合には、`ls -l' 形式の表示を得ることが 出来ます。ustar フォーマットのアーカイブから得られる表示においては、 ローカルシステムにて割り当てられていないユーザ名およびグループ名のファイルに ついては、アーカイブ内に格納された UID および GID の値に対応するローカルでの ユーザ名、グループ名に置き換えてその部分を表示します。

-V --dot
    各ファイルを処理するごとに、"." を表示します。

--version
    cpio のプログラムバージョンを表示して終了します。