戻る

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)