EN JA
CPIO.INFO(1)
CPIO.INFO(1) GNU Info CPIO.INFO(1)

名称

cpio.info - cpio.info

解説

GNU cpio はアーカイブを作成して、アーカイブから抽出するか、またはある場所から別の場所までファイルをコピーするツールです。それは tar ファイルを読み書きすると同様に多くの cpio 形式を取り扱います。これは、 GNU cpio 文書の初版であり、 GNU cpio 2.5 と一致しています。

1 はじめに

GNU cpio はファイルを cpio または tar アーカイブにコピーするか、アーカイブからファイル取り出します。アーカイブはディスク、磁気テープ、またはパイプの別のファイルを指定できます。

GNU cpio は、次のアーカイブが形式をサポートします: バイナリ、古い ASCII、新しい ASCII、crc、 HPUX バイナリ、 HPUX の古い ASCII、古い tar、と POSIX.1 tar です。 tar プログラムとの互換性のある tar 形式を提供しています。デフォルトで、cpio は、古い cpio プログラムと互換性のあるバイナリ形式のアーカイブを作成します。アーカイブから抽出するとき、cpio は、自動的に読み込むアーカイブの種類を認識して、異なったバイト順のマシンで作成されたアーカイブを読み込むことができます。

2 チュートリアル (入門)

GNU cpio は 3 つの主要な機能を実行します。アーカイブにファイルをコピーする、アーカイブからファイルを抽出する、そして、ファイルを別のディレクトリツリーに渡します。アーカイブはディスク上のファイル、複数のフロッピディスク、または複数のテープを指定できます。

アーカイブを作成するとき、cpio は標準入力から処理されるファイルのリストを取り、アーカイブを標準出力、または、` -F' オプションで明示されたデバイスに送ります。 "コピーアウトモード"参照。通常、find または ls が、このリストを標準入力に提供するために使用されます。次の例では、利用者は、単一ディレクトリの内容をアーカイブするための可能性がわかります。

% ls | cpio -ov > directory.cpio

` -o' オプションはアーカイブを作成し、` -v オプションは、アーカイブに追加されたファイルの名前を印刷 (表示) します。オプションは単一の ` - の後にまとめることができるか、またはコマンドラインに別々に置くことができることに注意してください。 ` >' は、cpio の出力をファイル ` directory.cpio' にリダイレクト (出力先変更) します。

利用者がディレクトリツリー全体をアーカイブしたいなら、find コマンドはファイルのリストを cpio に供給することができます:

% find . -print -depth | cpio -ov > tree.cpio

これは、カレントディレクトリとディレクトリ以下のすべてのファイルを取り、それらをアーカイブ tree.cpio に入れます。さらに、` -o' はアーカイブを作成し、` -v' は、それらがアーカイブされるファイルの名前を利用者に表示します。 "コピーアウトモード"参照。 find 文で ` .' を使用することは、復元を行うとき、固定の絶対パスの代わりに相対パスでファイル名を保存するように、利用者に柔軟性を与えます。 ` -depth' オプションは、ディレクトリ自体を印刷 (表示) する前に、ディレクトリのエントリを印刷 (表示) するように ` find' に強制します。これは、ディレクトリ名自体の前にディレクトリのディレクトリエントリを印刷 (表示) することによって、ディレクトリのパーミッションを制限している影響を限定します。訳注: 書き込み禁止のディレクトリの下にファイルを置けるようにすること。

cpio はデフォルトでディレクトリを作成しないので、アーカイブを抽出することはもう少しの考えを必要とします。別の特性は、利用者が、そうするように伝えないなら、既存のファイルを上書きしません。

% cpio -iv < directory.cpio

これは、ファイル directory.cpio にアーカイブされたファイルを取り出し、それらを現在のディレクトリに置きます。 ` -i' オプションはアーカイブを抽出します、` -v' はそれらが抽出されるとき、ファイル名を表示します。アーカイブされたディレクトリツリーを処理しているなら、次のように、必要に応じてディレクトリを作成するために ` -d' オプションを使用する必要があります:

% cpio -idv < tree.cpio

これは、アーカイブ tree.cpio の内容を取って、カレントディレクトリにそれを抽出します。利用者が既に存在する (同じか以降の変更時刻がある) 同じ名前のファイルの上にファイルを抽出しようとしているなら、 cpio は、-u オプションでそうするように伝えられないなら、ファイルを抽出しません。 "コピーインモード"参照。

コピーパスモードでは、cpio は、実際にアーカイブを使用しないでコピーアウトとコピーインを組み合わせて、1 つのディレクトリツリーから別のディレクトリツリーにファイルをコピーします。標準入力からコピーするためのファイルのリストを読み込み、オプションなし引数として与えられたそれらをディレクトリにコピーします。 "コピーパスモード"参照。

% find . -depth -print0 | cpio --null -pvd new-dir

例は、現在のディレクトリとサブディレクトリのファイルを new-dir と呼ばれる新しいディレクトリにコピーすることを示しています。いくつかの新しいオプションは、 GNU find で利用可能な ` -print0' で、 cpio の ` --null' オプションと組み合わされます。これらの 2 つのオプションは、たとえ特殊文字がファイル名に埋め込まれても、 find と cpio の間でファイル名を送るために一緒に役割を果たします。別のものは ` -p' で、それは、ディレクトリ ` new-dir' に見つけられたファイルを渡すように cpio に伝えます。

3 cpio の呼び出し

3.1 コピーアウト (copy-out) モード

コピーアウトモードでは、cpio はアーカイブにファイルをコピーします。それは、標準入力で 1 行あたり 1 つのファイル名のリストを読み込んで、標準出力にアーカイブを書き込みます。ファイル名のリストを生成する典型的な方法は、find コマンドを使用します。読み込み不可能なディレクトリでのパーミッションの問題を最小にするために-depth オプションを find に与えるべきです。 "オプション"参照。

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] [--rsh-command=command] [--help] [--version] < name-list [> archive]

3.2 コピーイン (copy-in) モード

コピーインモードでは、cpio はアーカイブからファイルをコピーするか、またはアーカイブの内容をリストします。それは標準入力からアーカイブを読み込みます。任意オプションでないコマンドラインの引数は、シェルのグロブ (ファイル名置換) パターンです。名前がそれらのパターンの 1 つ以上に適合するアーカイブのファイルだけがアーカイブからコピーされます。シェルと違って、ファイル名の最初の ` .' はパターンの始まりでワイルドカードに適合し、ファイル名の ` /' は、ワイルドカードに適合することができます。パターンが与えないなら、すべてのファイルを抽出します。 "オプション"参照。

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] [--absolute-filenames] [--sparse] [-only-verify-crc] [-quiet] [--rsh-command=command] [pattern...] [< archive]

3.3 コピーパス (copy-pass) モード

コピーパスモードでは、cpio は、実際にアーカイブを使用しないでコピーアウトとコピーインを組み合わせて、1 つのディレクトリツリーから別のディレクトリツリーにファイルをコピーします。標準入力からコピーするためのファイルのリストを読み込み、オプションなし引数として与えられたそれらをディレクトリにコピーします。 "オプション"参照。

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]] [--sparse] [--no-preserve-owner] [--help] [--version] destination-directory < name-list

3.4 オプション

-0, --null
名前に改行を含むファイルをアーカイブすることができるように、改行の代わりにヌル文字によって終了するファイル名のリストを読み込みます。 GNU find が、ヌル文字で終了するファイル名のリストを生成する一つの方法です。このオプションは、コピーアウトモードとコピーパスモードで使用することができます。
-a, --reset-access-time
たった今ファイルが読み込まれたものであると見えないようにするために、ファイルを読み込んだ後にファイルのアクセスタイムをリセットします。
-A, --append
すでに存在するアーカイブに追加します。コピーアウトモードだけで動作します。アーカイブは、 -O または -F (--file) オプションで指定されたディスクファイルでなければなりません。
-b, --swap
データ中のワードのハーフワードとハーフワード中の 2 バイトの両方を交換します。 -sS と同等です。このオプションは、コピーインモードで使用することができます。このオプションは、ビッグエンディアンとリトルエンディアンのマシンの間の 32 ビットの整数を変換するために使用します。
-B
I/O ブロックサイズを 5120 バイトに設定します。ブロックサイズの初期値は 512 バイトです。
--block-size=BLOCK-SIZE
I/O ブロックサイズを BLOCK-SIZE * 512 バイトに設定します。
-c
古い移植可能な ( 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 を使用します。有効な形式は以下にリストされています。また、同じ名前はすべて大文字で認識されます。コピーインモードのデフォルトは、自動的にアーカイブ形式を検出することであり、コピーアウトモードでは、"bin"がデフォルトです。
bin
時代遅れのバイナリ形式。
odc
古い ( POSIX.1) 移植可能な形式。
newc
65536 以上の i-node を持っているファイルシステムをサポートする、新しい ( SVR4) 移植可能な形式。
crc
チェックサムが加えられている新しい ( SVR4) 移植可能な形式。
tar
古い tar 形式。
ustar
POSIX.1 tar 形式。また、 GNU tar アーカイブも認識します。それらは、よく似ていますが、同じではありません。
hpbin
HPUX の cpio (デバイスファイルを異なる形式で格納する) によって使用される時代遅れのバイナリ形式。
hpodc
HPUX の cpio (デバイスファイルを異なる形式で格納する) によって使用される移植可能な形式。
-i, --extract
コピーインモードで実行します。 "コピーインモード"参照。
-I archive
標準入力の代わりに使用するアーカイブファイル名。アーカイブとして別のマシンのテープドライブを使用するためには、 ` HOSTNAME:' で始まるファイル名を使用します。そのユーザとしてリモートのテープドライブにアクセスするために、そのように行うパーミッション (許可) (通常、そのユーザの ` ~/.rhosts' ファイルにエントリがある) があるなら、ユーザ名と ` @' をホスト名の前に付けることができます。
-k
無視されます。他のバージョンの cpio との互換性のためにあります。
-l, --link
可能であるなら、ファイルをコピーする代わりにそれらをリンクします。
-L, --dereference
シンボリックリンク自体よりむしろシンボリックリンクが指しているファイルをコピーします。
-m, --preserve-modification-time
ファイルを作成するとき、以前のファイル変更時刻を保持します。
-M MESSAGE, --message=MESSAGE
(テープまたはフロッピディスクのような) バックアップメディアのボリュームの終りに到達したとき、ユーザに新しいボリュームを挿入するように促すために、 MESSAGE を印刷 (表示) します。 MESSAGE に文字列 "%d"が含まれているなら、それを現在の (1 から始まる) ボリューム番号に置き換えます。
-n, --numeric-uid-gid
` --verbose option' を使用するとき、 UIDGID を名前に変換する代わりに数値 UID と GID を表示します。
--absolute-filenames
コピーインモードで、ファイル名から .. と先導するスラッシュを含む先導するファイル名の構成要素を取り除きません。
--no-preserve-owner
ファイルの所有権を変更しません。ファイルを抽出しているユーザによって所有されているままにします。 System V のユーザのようにうっかりファイルを他人に渡すことがないように、これは、root 以外のユーザのデフォルトです。このオプションは、コピーインモードとコピーパスモードで使用することができます。
-o, --create
コピーアウトモードで実行します。 "コピーアウトモード"参照。
-O archive
標準出力の代わりに使用するアーカイブファイル名。アーカイブとして別のマシンのテープドライブを使用するためには、 ` HOSTNAME:' で始まるファイル名を使用します。そのユーザとしてリモートのテープドライブにアクセスするために、そのように行うパーミッション (許可) (通常、そのユーザの ` ~/.rhosts' ファイルにエントリがある) があるなら、ユーザ名と ` @' をホスト名の前に付けることができます。
--only-verify-crc
CRC 形式のアーカイブを読み込むとき、アーカイブ中の各のファイルの CRC を検証します。実際にファイルを抽出しません。
-p, --pass-through
コピーパスモードで実行します。 "コピーパスモード"参照。
--quiet
コピーされたブロック数を印刷 (表示) しません。
-r, --rename
対話形式でファイルの名前を変更します。
-R [user][:.][group], --owner [user][:.][group]
コピーアウトモードとコピーパスモードで、すべてのファイルの所有権を指定されたユーザ、グループに設定します。ユーザ、グループのいずれか、または両方を指定しなければなりません。グループが省略されているが、":"または "."セパレータが与えられるなら、与えられたユーザのログイングループを使用します。スーパユーザだけがファイルの所有権を変更することができます。
--rsh-command=COMMAND
リモートデバイスと通信するために COMMAND を使用するべきであることを cpio に通知します。
-s, --swap-bytes
ファイル中の各ハーフワード (2 バイト) 中のバイトを交換します。このオプションは、コピーインモードで使用することができます。
-S, --swap-halfwords
ファイル中のワード (4 バイト) 中のハーフワード (2 バイト) を交換します。このオプションは、コピーインモードで使用することができます。
--sparse
スパース (疎) ファイルとしてすべて 0 の大きなブロックとなっているファイルを書き込むます。このオプションは、コピーインモードとコピーパスモードで使用することができます。
-t, --list
入力の目次を印刷 (表示) します。
-u, --unconditional
既存の新しいファイルを古いファイルに置き換えるかどうか問い合わせなく、すべてのファイルを置き換えます。
-v, --verbose
処理されたファイル名をリストします、または -t が与えられたなら、 ` ls -l' スタイルの目次をリストします。 ustar アーカイブの目次の表示では、ローカルシステムに存在しないアーカイブ中のユーザ名とグループ名は、アーカイブに格納された数値 UIDGID に対応するローカルな名前に置き換えられます。
-V --dot
各ファイルを処理するごとに、` .' を印字 (表示) します。
--version
cpio のプログラムバージョン番号を印刷 (表示) して終了します。

4 磁気メディア (媒体)

通常、アーカイブは、取り外し可能なメディアテープカートリッジ、磁気テープ、またはフロッピディスクに書き込まれます。

テープまたはディスクに保持されるデータの量はサイズに依存するだけではなく、どのようにフォーマットされるかにも依存します。 1600 ビット/インチでフォーマットされるとき、磁気テープの 2400 フィートのリールは、40 メガバイトのデータを保持します。物理的により小さい EXABYTE テープカートリッジは、2.3 のギガバイトを保持します。

磁気メディアは、再使用可能であり、テープ上のアーカイブはもう必要ではありません、アーカイブは消去することができ、テープまたはディスクの使用を終了します。訳注: 意味が良く分かりません。しかしながら、絶えず使用することで、メディアの品質は劣化します。データエラーを起こし始めると、ほとんどのテープまたはディスクは、グレードが落ちているはずです。

磁気メディアは、磁場を使用することで書き込まれ、消去されます、そして格納されたデータへの損害を避けるためには、そのような磁場から防御されるべきです。磁石を使用してフロッピディスクをファイリングキャビネットに張り付けるのは、たぶんよい考えではありません。

2007-10-28