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]
[--rsh-command=command] [--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]
[-t|--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] [--to-stdout]
[--quiet] [--rsh-command=command] [--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 コマンドに、-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 portable (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
portable フォーマット、old
portable
フォーマットとも呼ばれます)。
- newc
- new ASCII
フォーマットです (SVR4
portable フォーマット、new
portable
フォーマットとも呼ばれます)。
65536 個を越える i-node
を持つファイルシステムに対応しています。
- crc
- チェックサム付きの
new portable フォーマット (SVR4
portable フォーマット)
です (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
を、名前に変換せずに数字で表示します。
- --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]
- コピーアウトモードとコピーパスモードにおいて、全ての生成ファイルの所有権を指定したユーザやグループに設定します。ユーザとグループのどちらか一方、もしくは両方を指定する必要があります。グループの指定ないで区切り文字
":" や "."
が指定された場合には、ユーザのログイングループがグループとして設定されます。スーパーユーザだけがファイルの所有権を変更することができます。
- --rsh-command=command
- リモートマシンにあるデバイスと通信する際に
command を使用する。
- --sparse
- コピーアウトモードとコピーパスモードにおいて、内容が
0
の大きなブロックを持つファイルを
sparse
ファイルとして書き出します。
- -s, --swap-bytes
- コピーインモードにおいて、ファイル中のデータの
16 ビットの上位 8
ビットと下位 8
ビットを入れ換えます。
- -S, --swap-halfwords
- コピーインモードにおいて、ファイル中のデータのワード
(32 ビット) の上位 16
ビットと下位 16
ビットを入れ換えます。
- -t, --list
- 入力の内容一覧を出力します。
- --to-stdout
- 取り出ししたファイルを標準出力に出力します。このオプションはコピーインモードで使用できます。
- -u, --unconditional
- 新しいファイルを古いファイルで置き換えるかどうかを問い合わせることなく、全てのファイルを上書きします。
- -v, --verbose
- 処理されたファイル名を表示します、
-t
オプションが同時に指定された場合には
`ls -l'
形式の表示を行います。ustar
フォーマットのアーカイブの詳細表示では、アーカイブ中のローカルシステムに存在しないユーザ名、グループ名は、アーカイブ内に格納された
UID および GID
の値に対応するローカル上のユーザ名、グループ名に置き換えて表示されます。
- -V --dot
- 各ファイルを処理するごとに、"."を表示します。
- --version
-
cpio
のプログラムバージョンを表示して終了します。