戻る
GNUのsh-fileutils付属のcpコマンドのマニュアル。
================================
CP(1) CP(1)
名前
cp - ファイルやディレクトリをコピーする
書式
cp [オプション] file path
cp [オプション] file... directory
POSIX オプション: [-fipRr]
GNU オプション (簡略形式): [-abdfilprsuvxPR] [-S SUFFIX]
[-V {numbered,existing,simple}] [--sparse=WHEN] [--help]
[--version] [--]
説明
cp はファイル (あるいはそのように指定すればディレクトリ)
をコピーする。 1 つのファイルを指定先にコピーしたり、複 数
のファイルを指定ディレクトリにコピーしたりできる。
最 後 の引き数が既に存在するディレクトリを指している場合、
cp はコピー元の file をそれぞれ (同じ名前のまま) その ディ
レ ク ト リにコピーする。 2 つのファイルだけが与えられた場
合、1 つ目のファイルを 2 つ目のファイルに上書きでコピー す
る。 最後の引き数がディレクトリでなく、 2 つ以上のオプショ
ンでない引き数が与えられている場合はエラーになる。
(したがって `cp -r /a /b' とすると、 /b が存在する場 合 は
/a を /b/a に、 /a/x を /b/a/x にコピーする。しかしコピー
前に /b がない場合は /a を /b に、/a/x を /b/x にコピー す
る。)
作 ら れたファイルとディレクトリのモードは、まずオリジナル
ファイルのモードと同じものにされ、 0777 との AND を と ら
れ、ユーザーの umask で修正される (-p オプションが指定され
た場合を除く) 。 (しかし再帰コピーの場合、新しく作ら れ た
ディ レクトリの最終モードは、一時的に S_IRWXU (0700) と OR
をとったものになる。こればプロセスがこれらの新しく作られた
ディレクトリの読み出し・書き込み・検索のプロセスを可能にす
るためである。)
ファイルをそれ自身にコピーしようとした場合、 (エ ラー メッ
セージを出す以外は) 何もしない。既存のファイルにコピーする
場合、コピー 先 の ファ イ ル は `open(path, O_WRONLY |
O_TRUNC)' で開かれる。新規ファイルにコピーする場合、新規
ファイルは `open(path, O_WRONLY | O_CREAT, mode)' で作成さ
れる。コピー先のファイルが存在し、かつ -f オプションが与え
られている場合にこの形式でのファイルのオープンに失敗 す る
と、 cp は既存のファイルの削除 (もしくはリンクを削除) を試
みる。そして、削除に成功した場合は新規ファイルへのコピーと
して命令を続行する。
POSIX オプション
POSIX では、4 つのオプションと、 1 つのオプションの半分を
認識する。
-f 必要であれば、既存のコピー先のファイルを削除する (
上記参照) 。
-i コピー先に既に存在するファイルを上書きするかを問い
合わせてくる。 (問い合わせは標準エラーに書かれ、 返
答 は 標 準入力から読まれる。上書きを肯定する返答が
あった場合のみコピーされる。)
-p オリジナルファイルの所有者、グループ、アク セ ス 権
(setuid, setgid ビットを含む) 、最終修正時刻、最終
アクセス時刻を保存する。所有者やグループの複製に 失
敗 した場合には、 setuid ビットと setgid ビットはク
リアされる。 (この場合コピー元とコピー先の最終ア ク
セ ス時刻が異なってしまうことに注意。コピー操作はコ
ピー元ファイルへのアクセスであるから。)
-R ディレクトリを再帰的にコピーし、一般のファイルで も
な くディレクトリでもないものに対してはそれに相応し
たコピーをする。 (たとえば FIFO とスペシャルファ イ
ル のコピーは、それぞれ FIFO とスペシャルファイルに
される。)
-r ディレクトリを再帰的にコピーするが、一般のファイ ル
で もなくディレクトリでもないものに対してどうするか
は指定されていない。 (したがって -r オプションを -R
オ プションの単なる別名にすることも可能である (実は
推奨されている)。しかし、現在の GNU 版の cp のよ う
な単純な動作 (下記参照) も禁止されていない。)
GNU 詳細
通常、ファイルは読まれた通りに書き出される。 --sparse オプ
ションの場合は例外であるので下記を参照すること。
デフォルトでは、`cp' はディレクトリのコピーを行わない ( 以
下の -r オプションを見よ) 。
cp はファイルのそれ自身へのコピーを通常は拒否するが、次の
ような例外がある: --force --backup が指定されていて、 コ
ピー 元と コピー先が同一で、通常のファイルを参照している場
合には、 cp はバックアップファイルを作る。バックアップファ
イル名は通常のもしくは番号の拡張子を持ち、指定のしかたは通
常と同じである。これは、既に存在するファイルを変更前に単純
にバックアップしたい場合に有用である。
GNU オプション
-a, --archive
コ ピー先で、できる限り元のファイルの構成と属性を保
持する (ディレクトリ構造体は保存しない) 。 -dpR と
同じ。
-d, --no-dereference
シ ンボリックリンクをコピーする場合、シンボリックリ
ンクが指しているファイルをコピーするのではなく、 シ
ン ボリックリンクとしてコピーする。また、コピー元で
のハードリンクはコピー先でもハードリンクとして保 持
される。
-f, --force
既存のコピー先ファイルを削除してからコピーする。
-i, --interactive
コ ピー 先 に上書きされる通常のファイルが存在する場
合、上書きの可否を問い合わせてくる。
-l, --link
コピーする代わりにハードリンクを作る (ただし、 ディ
レクトリ以外)。
-p, --preserve
元 ファイルの所有者、グループ、アクセス権、タイムス
タンプを保持する。
-P, --parents
コピー先のファイル名の作り方を「コピー先ディレク ト
リ に スラッシュ (/) とコピー元ファイルの名前を加え
る」とする。 cp の最後の引き数は既に存在するディ レ
クトリでなければならない。たとえば、
cp --parents a/b/c existing_dir
と い う コマンドは `a/b/c'というファイルを `exist-
ing_dir/a/b/c' に (間のディレクトリがない場合はそれ
も作って) コピーする。
-r ディレクトリを再帰的にコピーする。(FIFO やスペシャ
ルファイルといった) ディレクトリでもなくシンボ リッ
ク リンクでもないものを通常のファイルとしてコピーす
る。この場合 cp はコピー元ファイルからデータが読 み
込 み、 コ ピー先に書き出そうとする。よくある間違い
は、 `cp -r' をスペシャルファ イ ル、 FIFO、`/dev'
ディ レクトリ以下にあるものに対して使うことである。
多くの場合、cp は FIFO や `/dev/console' といったス
ペ シャルファイルから読み込もうとして永久にハングし
たり、 `/dev/zero' をコピーしようとしてコピー先ディ
ス クを溢れさせたり、不明なディバイスを開いてハード
ウェアによくわからない効果を及ぼしてしまっ た り す
る。 スペシャルファイルの内容をコピーするのでなく、
スペシャルファイルをその特性を保持したままコピー し
たい場合は、 --recursive または -R オプションを使う
こと。
-R, --recursive
ディレクトリでないものを保持しながら、ディレクト リ
を 再 帰 的にコピーする (すぐ上の -r オプションを見
よ)。
--sparse=WHEN
`スパースなファイル' は `ホール( 穴 )' (物理ディ ス
ク ブロックを占有しないゼロバイトの連続) を持ってい
る。 read システムコールはそれらのファイルをゼロ と
し て読み込む。多くのバイナリファイルはゼロバイトの
並びがたくさんを含まれているので、このオプション に
よ り、かなりのディスク容量を節約し、スピードを上げ
ることができる。デフォルトの場合では、`cp' は大雑把
な 発見的手法で入力されたコピー元ファイルからホール
を検知し、対応する出力ファイルもスパースにする。
WHEN の値は下のいずれかである:
auto デフォルトの動作:入力ファイルがスパースのと
き、出力ファイルもスパースにする。
always 常 に出力ファイルをスパースにする。このオプ
ションは入力ファイルがスパースなファイルをサ
ポートしないファイルシステム上にあるが、出力
ファイルはスパースなファイルをサポート す る
ファ イ ルシステム上に置かれる場合に有用であ
る。
never 出力ファイルをスパースにしない。このオプショ
ンの利用法を見付けたら筆者に教えてほしい。
-s, --symbolic-link
ディ レ ク トリ以外のファイルのファイルに対して、コ
ピーするかわりにシンボリックリンクを作る。 シ ン ボ
リッ クリンクファイルをカレントディレクトリに作る場
合を除き、コピー元ファイル名は ('/' で始まる) 絶 対
パ スでなければならない。シンボリックリンクをサポー
トしていないシステムでは、このオプションは 単 に エ
ラーメッセージを出力するだけである。
-u, --update
ディ レクトリ以外のファイルのコピーで、コピー先ファ
イルが既に存在し、修正時刻がコピー元と同じかより 新
しい場合、コピーを行わない。
-v, --verbose
コピーする前にそれぞれのファイル名を出力する。
-x, --one-file-system
コ ピーを始めたディレクトリと異なるファイルシステム
上にあるサブディレクトリをコピーをしない。マウン ト
ポ イントは同じファイルシステム上にあるのでコピーさ
れる。
GNU バックアップオプション
GNU 版のプログラム cp, mv, ln, install, patch は、上書き、
修正、削除といった場合に、指示すればファイルのバックアップ
を作成する。バックアップファイルを必要とする場合は -b オプ
ションで指定する。どのような名前にするかは -V オプションで
指定する。バックアップファイルの名前を、ファイル名に拡張子
を追加する形で与えるようにしたい場合、この拡張子を -S オプ
ションで指示する。
-b, --backup
上書きもしくは削除の必要がある場合にはファイル の
バックアップを作成する。
-S SUFFIX, --suffix=SUFFIX
SUFFIX をバックアップファイルそれぞれに付け加える。
このオプションが指定されていない場合、環境変数 SIM-
PLE_BACKUP_SUFFIX に 設定されている値が使われる。
SIMPLE_BACKUP_SUFFIX が設定されていない場合の標準値
は `~' である。
-V METHOD, --version-control=METHOD
バッ ク アッ プファイルの命名方法を指定する。引き数
METHOD として、`numbered' (または `t')、`existing'
(または `nil')、 `never' (または `simple') を指定で
きる。このオプションが指定されていない場合、環境 変
数 VERSION_CONTROL の値が使われる。 VERSION_CONTROL
が設定されていない場合の標準値は `existing' で あ
る。
こ のオプションは Emacs 変数の `version-control' に
対応している。有効な METHOD は (他と重複しない短 縮
形が使える):
t, numbered
常 に 番号の拡張子を持つバックアップが作られ
る。
nil, existing
番号の拡張子を持つバックアップがすでにある場
合には番号の拡張子を持つバックアップを、そう
でない場合には単純なバックアップを作成する。
never, simple
常に単純なバックアップが作られる。
GNU 標準オプション
--help 標準出力に使用方法のメッセージを出力して正常終了す
る。
--version
標準出力にバージョン情報を出力して正常終了する。
-- オプションリストを終了する。
環境変数
変数 LANG, LC_ALL, LC_CTYPE, LC_MESSAGES が通常の意味を 持
つ。 GNU 版では、変数 SIMPLE_BACKUP_SUFFIX と VERSION_CON-
TROL がバックアップファイルの命名法を上で説明した方法で 管
理する。
準拠
POSIX 1003.2
注意
こ のページでは fileutils-4.0 パッケージでの cp コマンドに
ついて説明している; その他のバージョンでは少し違いがあるか
もしれない。修正や追加は aeb@cwi.nl, aw@mail1.bet1.puv.fi,
ragnar@macula.net 宛にメイルしてください。プログラムのバグ
については bug-fileutils@gnu.org へ報告してください。
GNU fileutils 4.0 17 November 1998 CP(1)