| コマンド名称 |
cp |
最終更新日 |
2008-08-31 |
| コマンド機能 |
ファイルやディレクトリをコピーする |
| 機能概要 |
・指定したファイルの内容を別のファイルにコピーする
・指定したディレクトリの内容やサブディレクトリを別のディレクトリにコピーする
・filesに指定した1対上のファイルを指定したディレクトリにコピーする |
| コマンドの由来 |
copy |
| RPMパッケージ名 |
coreutils |
対象バージョン |
6.9 |
| コマンド書式 |
cp [オプション] file path
cp [オプション] file... directory |
| オプション |
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'というファイルを `existing_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 をバックアップファイルそれぞれに付け加える。このオプションが指定されていない場合、環境変数
SIMPLE_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
標準出力にバージョン情報を出力して正常終了する
--
オプションリストを終了する |
| 引数 |
|
| 使用例 |
|
|