TOP - Unix系OS - FreeBSD - cp(1)

ファイルやディレクトリをコピーします。

cp オプション1 ファイルパス1 ファイルパス2
cp オプション1 ファイルパス1... ディレクトリ
オプション1(任意)
    -f
        ファイルパス2のファイルが既に存在し、開く事ができない場合、削除してから再実行する
    -i
        ファイルパス2のファイルが既に存在する場合に、対話形式で確認する
    -L
        ファイルパス1のファイルのシンボリックリンクを辿ってコピーする
    -n
        ファイルパス2のファイルが既に存在する場合に、上書きしない
    -P
        -Rオプション指定の場合、ファイルパス1のファイルのシンボリックリンクを辿らずコピーする
    -p
        ファイルパス1のファイルの属性を可能な限り保持したままコピーする
    -R
        ファイルパス1のディレクトリを再帰的にコピーする
    -v
        コピー実行の表示を行う

ファイルパス1(必須)
    コピー元ファイル(ディレクトリ)

ファイルパス2(必須)
    コピー先ファイル(ディレクトリ)

ディレクトリ(必須)
    コピー先ディレクトリ

※ オプションなどは個人的に重要と考えられるものを記述しており、記載の無いものは、manページや関連書籍などを参照願います。
※ 実行例の記述は、不要と考えられる部分の削除などの修正を行ったものを掲載しています。
※ 実行例の実行環境はFreeBSD 9.1です。

(例)オプション無し コピー先ファイル名指定無し
$ cp test1/test.txt test2/
コピー元ファイル
$ ls -l test1
-rw-r--r--  1 ******  ******  9 MMM d hh:mm test.txt
実行後
$ ls -l test2
-rw-r--r--  1 ******  ******  9 MMM d hh:mm test.txt

(例)オプション無し コピー先ファイル名指定有り
$ cp test1/test.txt test2/test_copy.txt
コピー元ファイル
$ ls -l test1
-rw-r--r--  1 ******  ******  9 MMM d hh:mm test.txt
実行後
$ ls -l test2
-rw-r--r--  1 ******  ******  9 MMM d hh:mm test_copy.txt

$ cp -f test1/test.txt test2/test.txt
実行前
$ ls -l test1
-rw-r--r--  1 ******  ******  9 MMM d hh:mm test.txt

$ ls -l test2
-r--r--r--  1 ******  ****** 18 MMM d hh:mm test.txt     ← 書き込み不可
実行後
$ ls -l test2
-rw-r--r--  1 ******  ******  9 MMM d hh:mm test.txt     ← コピー元ファイルを上書き

$ cp -i test1/test.txt test2/test.txt
実行前
$ ls -l test1
-rw-r--r--  1 ******  ******  9 MMM d hh:mm test.txt

$ ls -l test2
-rw-r--r--  1 ******  ******  18 Aug 27 16:27 test.txt
確認メッセージ
overwrite test2/test.txt? (y/n [n]) 
実行後(確認メッセージで「y」を入力)
overwrite test2/test.txt? (y/n [n]) y     ← 確認メッセージに対し「y」を入力

$ ls -l test2
-rw-r--r--  1 ******  ******  9 MMM d hh:mm test.txt     ← コピー元ファイルを上書き
実行後(確認メッセージで[enter]のみ)
overwrite test2/test.txt? (y/n [n])     ← 確認メッセージで[enter]のみ入力
not overwritten

$ ls -l test2
-rw-r--r--  1 ******  ******  18 MMM d hh:mm test.txt     ← 元ファイルのまま

$ cp -L test1/test_symlink test1/test_symlink_copy
実行前
$ ls -l test1
-rw-r--r--  1 ******  ******  5 MMM d hh:mm test.txt
lrwxr-xr-x  1 ******  ******  8 MMM d hh:mm test_symlink -> test.txt
実行後
$ ls -l test1
-rw-r--r--  1 ******  ******  5 MMM d hh:mm test.txt
lrwxr-xr-x  1 ******  ******  8 MMM d hh:mm test_symlink -> test.txt
-rw-r--r--  1 ******  ******  5 MMM d hh:mm test_symlink_copy

$ cp -n test1/test.txt test2/test.txt
実行前
$ ls -l test1
-rw-r--r--  1 ******  ******  5 Aug 24 12:53 test.txt

$ ls -l test2
-rw-r--r--  1 ******  ******  15 Aug 24 12:56 test.txt
実行後
$ ls -l test2
-rw-r--r--  1 ******  ******  15 Aug 24 12:56 test.txt     ← 上書きされない

$ cp -PR test1/test_symlink test1/test_symlink_copy
実行前
$ ls -l test1
-rw-r--r--  1 ******  ******  5 Aug 24 12:53 test.txt
lrwxr-xr-x  1 ******  ******  8 Aug 24 15:13 test_symlink -> test.txt
実行後
$ ls -l test1
-rw-r--r--  1 ******  ******  5 Aug 24 12:53 test.txt
lrwxr-xr-x  1 ******  ******  8 Aug 24 15:13 test_symlink -> test.txt
lrwxr-xr-x  1 ******  ******  8 Aug 24 15:30 test_symlink_copy -> test.txt

$ cp -p testusr1.txt testusr1_copy.txt
実行前
$ ls -l
-rwxr-xr-x  1 testusr1  testusr1  17 Aug 30 21:34 testusr1.txt
実行後(root権限で実行した場合)
# ls -l
-rwxr-xr-x  1 testusr1  testusr1  17 Aug 30 21:34 testusr1.txt
-rwxr-xr-x  1 testusr1  testusr1  17 Aug 30 21:34 testusr1_copy.txt

$ cp -R test1/testdir2 test2/
実行前
$ ls -lR test1
testdir/:
drwxr-xr-x  2 ******  ******  512 Aug 30 22:19 testdir2

test1/testdir2:
-rw-r--r--  1 ******  ******  5 Aug 30 22:19 test.txt
実行後
$ ls -lR test2
drwxr-xr-x  2 ******  ******  512 Aug 30 22:22 testdir2

test2/testdir2:
-rw-r--r--  1 ******  ******  5 Aug 30 22:22 test.txt

$ cp -uv testdir/test.txt testdir/test2.txt testdir/test3.txt /mnt/usbmem/
実行前
$ ls -l test1/
-rw-r--r--  1 ******  ******   5 Aug 30 22:51 test.txt
-rw-r--r--  1 ******  ******   5 Aug 30 22:58 test2.txt
-rw-r--r--  1 ******  ******  16 Aug 30 22:59 test3.txt

$ ls -l test2/
-rw-r--r--  1 ******  ******  5 Aug 30 23:02 test.txt
実行時表示
test1/test3.txt -> test2/test3.txt
test1/test2.txt -> test2/test2.txt
test2/test.txt not overwritten
test1/test.txt -> test2/test.txt
実行後
$ ls -l test2
-rw-r--r--  1 ******  ******   5 Aug 30 23:02 test.txt
-rw-r--r--  1 ******  ******   5 Aug 30 23:06 test2.txt
-rw-r--r--  1 ******  ******  16 Aug 30 23:06 test3.txt

Copyright(C) 2006-2013 CLAYPOT. All Rights Reserved.