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] [--quiet] [--force-local] [--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] [--force-local] [--no-absolute-filenames] [--sparse] [--only-verify-crc] [--quiet] [--help] [--version] [pattern...] [< archive] cpio {-p|--pass-through} [-0adlmuvLV] [-R [user][:.][group]] [--null] [--reset-access-time] [--make-directories] [--link] [--quiet] [--preserve-modification-time] [--unconditional] [--verbose] [--dot] [--dereference] [--owner=[user][:.][group]] [--no-preserve-owner] [--sparse] [--help] [--version] destination-directory < name-list

解説
このマニュアルは、GNU 版の cpio について説明します。 cpio は、cpio 形式もしくは tar 形式のアーカイブファイルに格納されたファイルを 取り出したり、その逆を行なったりします。アーカイブファイルとは、格納される ファイルそのものに加え、それら個々のファイルについてのファイル名や所有者、 タイムスタンプ、アクセス権限のような情報を含むようなファイルです。 アーカイブファイルは、ディスク上のファイルでも、 磁気テープ上に格納してあるファイルでも、もしくはパイプであっても構いません。 cpio は、3 つの操作モードを持っています。

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

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

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

cpio は、 binary, old ASCII, new ASCII, crc, HPUX binary, HPUX old ASCII, old tar, POSIX.1 tar の各形式のアーカイブフォーマットをサポートします。 binary フォーマットは、異なるマシンアーキテクチャ間では互換性のない方法で、 ファイルの情報をエンコードするので、ほとんど使われません (つまり、binary フォーマットは、異なるマシンアーキテクチャ間で、 互換性のないアーカイブを生成するので、あまり使われないということです)。 old ASCII フォーマットは、異なるマシンアーキテクチャの間での互換性は 保たれますが、65536 個を超える i-node を備えるシステムで使われることを 想定してません。 new ASCII フォーマットは、異なるマシンアーキテクチャの間でのアーカイブの 互換性は保たれます。old ASCII フォーマットのように、ファイルシステムの サイズの制限はありませんが、全てのバージョンの cpio でこの形式をサポートするわけではありません。現状でこのフォーマットを サポートする cpio は、GNU cpio と、Unix System V R4 の 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 (POSIX.1 互換) フォーマットです。

    newc
        new ASCII (SVR4 互換) フォーマットです。 new ASCII フォーマットは、65536 個を超える i-node を備える ファイルシステムをサポートします。

    crc crc フォーマットです。 crc フォーマットは、new ASCII フォーマットと似ていますが、 チェックサムを含みます。

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

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

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

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

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

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

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

-l, --link
    可能であれば、ファイルをコピーするかわりにリンクを張ります ( -p オプションと共に指定するときのみ使用できます)。

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

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

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

-n, --numeric-uid-gid
    冗長モードで内容のリストを出す場合に、UID および GID を、その ID の 対応するユーザ名 / グループ名でなく、数字で表示します。

--no-absolute-filenames
    コピーインモードで、 アーカイブ中に絶対ファイル名で格納されていたとしても、 現在のディレクトリからの相対でファイルを生成します。

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

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

-O archive
    標準出力のかわりに、指定したアーカイブファイルを用います。他のマシンの テープドライブをアーカイブファイルとして扱う場合には、`HOSTNAME:' で 始まるファイル名を使用して下さい。ホスト名は、そのユーザとして リモートテープドライブをアクセスするためにユーザ名と '@' を先に 書いても構いません (典型的には、そのユーザの `~/.rhosts' エントリに エントリが存在するマシンであることが多いようです)。

--only-verify-crc
    コピーインモードで CRC フォーマットのアーカイブを読み込む時に、 アーカイブ内の各ファイルの CRC をベリファイするだけで、 実際にファイルを取り出しません。

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

--quiet
    コピーされたブロック数を表示しません。

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

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

--sparse
    コピーアウトモードおよびコピーパスモードにおいて、0 から成る大きなブロックを 持つファイルを疎なファイルとして書きます。

-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 のプログラムバージョンを表示して終了します。