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

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

cp オプション1 ファイルパス1 ファイルパス2
cp オプション1 ファイルパス1... ディレクトリ
オプション1(任意)
    -b
        ファイルパス2のファイルが上書きされる場合、バックアップを作成する
    -f, --force
        ファイルパス2のファイルが既に存在し、開く事ができない場合、削除してから再実行する
    -i, --interactive
        ファイルパス2のファイルが既に存在する場合に、対話形式で確認する
    -l, --link
        コピーとしてファイルパス1のファイルのハードリンクを作成する
    -L, --dereference
        ファイルパス1のファイルのシンボリックリンクを辿ってコピーする
    -n, --no-clobber
        ファイルパス2のファイルが既に存在する場合に、上書きしない
    -P, --no-dereference
        ファイルパス1のファイルのシンボリックリンクを辿らずコピーする
    -p
        ファイルパス1のファイルの属性(mode、ownership、timestamps)を保持したままコピーする
    -R, -r, --recursive
        ファイルパス1のディレクトリを再帰的にコピーする
    -s, --symbolic-link
        コピーとしてファイルパス1のファイルのシンボリックリンクを作成する
    -S, --suffix
        バックアップが作成される場合、接尾辞を指定文字列とする
    -u, --update
        ファイルパス2のファイルが存在しないか、ファイルパス1のファイルより古い場合コピーする
    -v, --verbose
        コピー実行の表示を行う
    --help
        ヘルプを表示する
    --version
        バージョン情報を表示する

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

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

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

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

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

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

$ cp -b testdir/test.txt /mnt/usbmem/test.txt
実行前
$ ls -l testdir 
-rw-r--r-- 1 ******* ******* 5 MMM d hh:mm test.txt

$ ls -l /mnt/usbmem
-rwxr-xr-x 1 ******* ******* 31645 MMM d hh:mm test.txt
実行後
$ ls -l /mnt/usbmem
-rw-r--r-- 1 ******* *******     5 MMM d hh:mm test.txt
-rwxr-xr-x 1 ******* ******* 31645 MMM d hh:mm test.txt~     ← バックアップファイル

$ cp -f testdir/test.txt /mnt/usbmem/test.txt
実行前
$ ls -l testdir 
-rw-r--r-- 1 ******* ******* 5 MMM d hh:mm test.txt

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

$ cp -i testdir/test.txt /mnt/usbmem/test.txt
実行前
$ ls -l testdir 
-rw-r--r-- 1 ******* ******* 5 MMM d hh:mm test.txt

$ ls -l /mnt/usbmem
-rw-r--r-- 1 ******* ******* 13 MMM d hh:mm test.txt
確認メッセージ
cp: overwrite `/mnt/usbmem/test.txt'? 
実行後(確認メッセージで「y」を入力)
cp: overwrite `/mnt/usbmem/test.txt'? y     ← 確認メッセージに対し「y」を入力

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

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

$ cp -l testdir/test.txt testdir/test_hardlink
実行前
$ ls -il testdir/
4589488 -rw-r--r-- 1 ******* ******* 5 MMM d hh:dd test.txt
実行後
$ ls -il testdir/
4589488 -rw-r--r-- 2 ******* ******* 5 MMM d hh:mm test.txt
4589488 -rw-r--r-- 2 ******* ******* 5 MMM d hh:mm test_hardlink

$ cp -L testdir/test_symlink testdir/test_symlink_copy
実行前
$ ls -l testdir/
-rw-r--r-- 1 ******* ******* 5 Aug  3 16:54 test.txt
lrwxrwxrwx 1 ******* ******* 8 Aug  3 18:03 test_symlink -> test.txt
実行後
$ ls -l testdir/
-rw-r--r-- 1 ******* ******* 5 Aug  3 16:54 test.txt
lrwxrwxrwx 1 ******* ******* 8 Aug  3 18:03 test_symlink -> test.txt
-rw-r--r-- 1 ******* ******* 5 Aug  3 18:08 test_symlink_copy

$ cp -n testdir/test.txt /mnt/usbmem/test.txt
実行前
$ ls -l testdir 
-rw-r--r-- 1 ******* ******* 5 Aug  3 16:54 test.txt

$ ls -l /mnt/usbmem
-rw-r--r-- 1 ******* ******* 15 Aug  3 18:46 test.txt
実行後
$ ls -l /mnt/usbmem
-rw-r--r-- 1 ******* ******* 15 Aug  3 18:46 test.txt     ← 上書きされない

$ cp -P testdir/test_symlink testdir/test_symlink_copy
実行前
$ ls -l testdir/
-rw-r--r-- 1 ******* ******* 5 Aug  3 16:54 test.txt
lrwxrwxrwx 1 ******* ******* 8 Aug  3 18:03 test_symlink -> test.txt
実行後
$ ls -l testdir/
-rw-r--r-- 1 ******* ******* 5 Aug  3 16:54 test.txt
lrwxrwxrwx 1 ******* ******* 8 Aug  3 18:03 test_symlink -> test.txt
lrwxrwxrwx 1 ******* ******* 8 Aug  3 18:14 test_symlink_copy -> test.txt

$ cp -p testdir/test.txt testdir/test_copy.txt
実行前
$ ls -l testdir/
-rwxr-xr-x 1 testuser testuser 22 Aug  3 23:32 test.txt
実行後(root権限で実行した場合)
$ ls -l testdir/
-rwxr-xr-x 1 testuser testuser 22 Aug  3 23:32 test.txt
-rwxr-xr-x 1 testuser testuser 22 Aug  3 23:32 test_copy.txt

$ cp -r testdir/testdir2 /mnt/usbmem/
実行前
$ ls -lR testdir/
testdir/:
drwxr-xr-x 2 ******* ******* 4096 MMM d hh:mm testdir2

testdir/testdir2:
-rw-r--r-- 1 ******* ******* 5 MMM d hh:mm test.txt
実行後
$ ls -l /mnt/usbmem/
drwxr-xr-x 2 ******* *******  4096 MMM d hh:mm testdir2

$ ls -l /mnt/usbmem/testdir2/
-rw-r--r-- 1 ******* ******* 5 MMM d hh:mm test.txt

$ cp -s test.txt test_symlink
実行前
$ ls -l
-rw-r--r-- 1 ******* ******* 5 MMM d hh:mm test.txt
実行後
$ ls -l
-rw-r--r-- 1 ******* ******* 5 MMM d hh:mm test.txt
lrwxrwxrwx 1 ******* ******* 8 MMM d hh:mm test_symlink -> test.txt

$ cp -S _suffix testdir/test.txt /mnt/usbmem/test.txt
実行前
$ ls -l testdir/    
-rw-r--r-- 1 ******* ******* 5 MMM d hh:mm test.txt

$ ls -l /mnt/usbmem/
-rw-r--r-- 1 ******* ******* 5 MMM d hh:mm test.txt
実行後
$ ls -l /mnt/usbmem/
-rw-r--r-- 1 ******* *******     5 MMM d hh:mm test.txt
-rw-r--r-- 1 ******* *******     5 MMM d hh:mm test.txt_suffix

$ cp -u testdir/test.txt testdir/test2.txt testdir/test3.txt /mnt/usbmem/
実行前
$ ls -l testdir/
-rw-r--r-- 1 ******* ******* 5 Aug  4 13:23 test.txt
-rw-r--r-- 1 ******* ******* 5 Aug  4 15:47 test2.txt
-rw-r--r-- 1 ******* ******* 9 Aug  4 15:53 test3.txt

$ ls -l /mnt/usbmem/
-rw-r--r-- 1 ******* ******* 16 Aug  4 15:52 test.txt
-rw-r--r-- 1 ******* *******  5 Aug  4 15:47 test3.txt
実行後
$ ls -l /mnt/usbmem/
-rw-r--r-- 1 ******* ******* 16 Aug  4 15:52 test.txt
-rw-r--r-- 1 ******* *******  5 Aug  4 15:58 test2.txt
-rw-r--r-- 1 ******* *******  9 Aug  4 15:58 test3.txt

$ cp -uv testdir/test.txt testdir/test2.txt testdir/test3.txt /mnt/usbmem/
実行前
$ ls -l testdir/
-rw-r--r-- 1 ******* *******  5 Aug  4 13:23 test.txt
-rw-r--r-- 1 ******* *******  5 Aug  4 15:47 test2.txt
-rw-r--r-- 1 ******* ******* 20 Aug  4 16:11 test3.txt

$ ls -l /mnt/usbmem/
-rw-r--r-- 1 ******* ******* 16 Aug  4 15:52 test.txt
-rw-r--r-- 1 ******* *******  5 Aug  4 15:47 test3.txt
実行時表示
`testdir/test2.txt' -> `/mnt/usbmem/test2.txt'
`testdir/test3.txt' -> `/mnt/usbmem/test3.txt'
実行後
$ ls -l /mnt/usbmem/
-rw-r--r-- 1 ******* *******  5 Aug  4 16:05 test.txt
-rw-r--r-- 1 ******* *******  5 Aug  4 16:18 test2.txt
-rw-r--r-- 1 ******* ******* 20 Aug  4 16:18 test3.txt

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