Loose-Info.com

Last Update 2019/12/26


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

(例) -b オプション
$ 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~ ← バックアップファイル

(例) -f オプション
$ 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 ← コピー元ファイルを上書き

(例) -i オプション
$ 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 ← 元ファイルのまま

(例) -l オプション
$ 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

(例) -L オプション
$ 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

(例) -n オプション
$ 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 ← 上書きされない

(例) -P オプション
$ 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

(例) -p オプション
$ 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

(例) -r オプション
$ 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

(例) -s オプション
$ 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

(例) -S オプション
$ 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

(例) -u オプション
$ 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

(例) -v オプション
$ 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