ファイルをコピーする
■-- 文法 --■
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