cpコマンド

Linux入門マニュアルを無料プレゼントしています。

ダウンロードは今すぐこちらをクリック

ファイルをコピーする

■-- 文法 --■

cp (オプション) 「コピー元ファイル名」 「コピー先ファイル名」

      例)
      cp▲ -p▲test.txt▲test_cp.txt
      「test.txt」ファイルの所有者、タイムスタンプ、アクセス権限などの
      情報もコピーする
       ※▲はスペースを表してます。

ファイルやディレクトリーをコピーする場合に使用します。
実行する際は、コピー元ファイル名とコピー先ファイル名を指定して
実行する必要があります。


■ オプション

-r ディレクトリごとコピーする
-f コピー先ファイルが既に存在する場合、強制的に上書きする
-i コピー先ファイルが既に存在する場合、上書きするか確認する
-p コピー元の所有者、タイムスタンプ、アクセス権などの情報を保持したままコピーする

■ 実行例

コマンド練習をする前にLinuxにログインして、
下記コマンドを実行して実習用ファイルを作成してください。

[pakira@Tiger ~]$ touch data.dat
[pakira@Tiger ~]$ touch out.txt
[pakira@Tiger ~]$ touch test.dat
[pakira@Tiger ~]$ touch tmp.dat
[pakira@Tiger ~]$ mkdir dir1
[pakira@Tiger ~]$ touch /tmp/cp_test.txt
※ファイルは存在しない場合作成してください。
※作成する場合はシステムに影響しないよう注意してください。
※今後はコマンドプロンプトの[pakira@Tiger ~]の箇所は省略します。

---------------------------------------
▼ファイルをコピーする
---------------------------------------
$ ls  ←ファイル一覧を表示
Desktop data.dat out.txt test.dat tmp.dat
$ cp data.dat data_new.dat ←「data.dat」を「data_new.dat」へコピーする
$ ls
Desktop data.dat data_new.dat out.txt test.dat tmp.dat 
          ↑「data_new.dat」が新しくコピーされる

---------------------------------------
▼ディレクトリごとコピーする
---------------------------------------
$ ls -l
合計 8
drwxr-xr-x 2 pakira pakira 4096 1月 19 13:34 Desktop
-rw-rw-r-- 1 pakira pakira 0 1月 27 02:48 data.dat
-rw-rw-r-- 1 pakira pakira 0 1月 27 02:56 data_new.dat
drwxrwxr-x 2 pakira pakira 4096 1月 27 03:01 dir1
-rw-rw-r-- 1 pakira pakira 0 1月 27 02:48 out.txt
-rw-rw-r-- 1 pakira pakira 0 1月 27 02:48 test.dat
-rw-rw-r-- 1 pakira pakira 0 1月 27 02:49 tmp.dat


$ cp -r dir1 dir2 ←「cp」コマンドにオプションで「-r」をつけて実行する
$ ls -l
合計 12
drwxr-xr-x 2 pakira pakira 4096 1月 19 13:34 Desktop
-rw-rw-r-- 1 pakira pakira 0 1月 27 02:48 data.dat
-rw-rw-r-- 1 pakira pakira 0 1月 27 02:56 data_new.dat
drwxrwxr-x 2 pakira pakira 4096 1月 27 03:01 dir1
drwxrwxr-x 2 pakira pakira 4096 1月 27 03:04 dir2
-rw-rw-r-- 1 pakira pakira 0 1月 27 02:48 out.txt
-rw-rw-r-- 1 pakira pakira 0 1月 27 02:48 test.dat
-rw-rw-r-- 1 pakira pakira 0 1月 27 02:49 tmp.dat

↑ディレクトリ「dir/」が「dir2/」へコピーされる

--------------------------------------------
▼コピー先に同じファイル名のファイルが既に存在する場合、上書きするか確認する
--------------------------------------------
今回コマンド実行したCentOS5.5環境の場合、コピー先に同じファイル名の
ファイルが存在しても初期設定(デフォルト)で強制上書きされるように
なっています。

$ ls
Desktop data.dat data_new.dat dir1 dir2 out.txt test.dat tmp.dat
$ cp out.txt data_new.dat 
↑既に存在するファイルでも初期設定では上書きしてしまう

この場合、同じファイル名のファイルがあることに気づかず上書きコピー
してしまう事があります。それを防ぐためにオプション「-i」を使用します。

$ cp -i out.txt data_new.dat ←オプション「-i」を指定して上書き確認をする
cp: \`data_new.dat\' を上書きしてもよろしいですか(yes/no)? y
       ↑上書きするかの確認 (y=yes n=no)

なお、cpコマンドを実行することでファイルが上書きされないよう、
Linuxによってはデフォルトでcpコマンドを-iオプション付きで実行するように
設定されているものもあります。

---------------------------------------
▼ファイルを複数コピーする
---------------------------------------
$ cp data.dat test.dat dir1
 ↑コピー元ファイル名をスペースで複数指定してコピー先にはディレクトリを指定する
$ ls dir1 ←コピー先フォルダの中身を確認する
data.dat test.dat
 ↑複数のファイルが指定したディレクトリへコピーされる

-----------------------------------------------
▼コピー先ファイル名に「.」を指定し、
 カレントディレクトリにファイルをコピーする
-----------------------------------------------
$ ls
Desktop data.dat data_new.dat dir1 dir2 out.txt test.dat tmp.dat
$ cp /tmp/cp_test.txt .  ←コピー先に「.」を指定
$ ls
Desktop data.dat dir1 out.txt tmp.dat
cp_test.txt data_new.dat dir2 test.dat
↑「/tmp」ディレクトリにある「cp_test.txt」ファイルがカレントディレクトリにコピーされる



P.S
cpのもっと高い技術を身につけたいならこちら


<<関連記事>>
・pstree
・chsh
・finger
・du
・uname