ファイルやディレクトリをコピーする(cp)

スポンサーリンク

環境

CentOS7.6(64bit)

概要

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

書式

cp [オプション] コピー元ファイル名 コピー先ファイル名
cp [オプション] コピー元ファイル名 コピー先ディレクトリ

オプション

-i
コピー先に同名のファイルがある場合は、上書きするか確認メッセージを表示させます。

-f
コピー先に同名のファイルがある場合は、上書きします。
ただし、デフォルトでは、エイリアスで -i が強制されています。(aliasコマンドで確認できます)
そのため、コマンドの前に、バックスラッシュをつけてエイリアスを無効にすることで -f を利用することができます。

-R
ディレクトリをコピーします。ディレクトリの中にある全てのファイル・サブディレクトリに対してコピーを行います。

-a
ファイル構成やアクセス権限を保持してコピーします。

-p
元ファイルの情報を保存します。ファイルにはユーザ名・属性・更新日時など、ファイルに関するさまざまな情報があります。cp コマンドでコピーをすると、新しいファイルはそれらが全て新しい内容になってコピーされます。新しい内容を作成せず、古い情報を保持したままコピーを作成したい場合、この-pオプションを利用します。

-u
コピー先に同一ファイル名がすでに存在し、最終更新時間がコピー元ファイルより新しい場合は、コピーを実行しません。

-b
コピー先にファイルがすでに存在する場合は、ファイル名末尾に「~」(チルダ)をつけたバックアップを作成します。

サンプル

例1

ファイルをコピーします。
$ cp test.txt test2.txt
test.txtファイルをtest2.txtファイルとしてコピーします。

例2

2つのファイルを同時にコピーします。ここから先はわかりやすさを重視するためtreeコマンドを使用します。
$ tree

.
|-- dir1
|-- test1.txt
`-- test2.txt

1 directory, 2 files

ディレクトリが1つ、テキストファイルが2つあることが確認できます。

$ cp test1.txt test2.txt ./dir1
2つのファイルをdir1にコピーします。

$ tree

.
|-- dir1
|   |-- test1.txt
|   `-- test2.txt
|-- test1.txt
`-- test2.txt

1 directory, 4 files

dir1の下に2つのテキストファイルがコピーされたことをが確認できます。

例3

ワイルドカードを使ってファイルをコピーします。ここから先はわかりやすさを重視するためtreeコマンドを使用します。
$ tree

.
├── a1.txt
├── a2.txt
├── b1.txt
├── c1.txt
├── c2.txt
├── c3.txt
└── dir1
 
1 directory, 6 files

$ cp a*.txt ./dir1
aから始まるテキストファイルのみをdir1ディレクトリの中にコピーします。

$ tree

|-- a1.txt
|-- a2.txt
|-- b1.txt
|-- c1.txt
|-- c2.txt
|-- c3.txt
`-- dir1
    |-- a1.txt
    `-- a2.txt

1 directory, 8 files

dir1ディレクトリの中にa1.txtとa2.txtがコピーされていることが確認できます。

例4

ディレクトリをコピーします。
# cp -R /var/log/ ./
/var/log配下のサブディレクトリとファイルをカレントディレクトリにコピーします。

例5

ファイル構成やアクセス権限を変更せずにコピーします。。
$ ls -l /var/www/

total 20
drwxr-xr-x   3 root root   4096 Apr 27 10:47 cgi-bin
drwxr-xr-x   3 root root   4096 Apr 27 10:47 data
drwxr-xr-x   3 root root   4096 Apr 27 10:45 error
drwxr-xr-x   3 root root   4096 Apr 27 10:47 html
drwxr-xr-x   3 root root   4096 Apr 27 10:45 icons

$ cp -a /var/www/ ./www
$ ls -l ./www/

total 20
drwxr-xr-x   3 root root   4096 Apr 27 10:47 cgi-bin
drwxr-xr-x   3 root root   4096 Apr 27 10:47 data
drwxr-xr-x   3 root root   4096 Apr 27 10:45 error
drwxr-xr-x   3 root root   4096 Apr 27 10:47 html
drwxr-xr-x   3 root root   4096 Apr 27 10:45 icons

/var/wwwと同じ構成でコピーされたことが確認できます。