概要
cpコマンドは、ファイルやディレクトリをコピーするために使います。
dir
└─ sample.txt
【dirディレクトリにいる場合】
[tomoji@10moji-blog.com home]$ ls
sample.txt
[tomoji@10moji-blog.com dir]$ cp sample.txt new_sample.txt
[tomoji@10moji-blog.com dir]$ ls
sample.txt new_sample.txt
【ファイル削除後】
dir
├─ sample.txt
└─ new_sample.txt
オプション一覧
オプション | 説明 |
---|---|
-r | ディレクトリを再帰的にコピー |
-i | コピー先に存在確認 |
-v | コピーの詳細表示 |
-u | ソースとターゲットのファイルを比較し、ソースがターゲットより新しい場合のみコピーします。 |
-l | ハードリンク作成 |
-s | シンボリックリンク作成 |
-p | ファイル属性 (所有者、パーミッションなど) 保存 |
-P | シンボリックリンクをコピー元と同じものにする |
–parents | コピー先にディレクトリを作成 |
-r
-rオプションは、ディレクトリとその中身を再帰的にコピーすることができます。
home
└─ user1
├─ sample1.txt
└─ dir
├─ sample1.txt
└─ sample2.txt
【homeディレクトリにいる場合】
[tomoji@10moji-blog.com home]$ cp -r user1 user2
【コピー後】
home
├─ user1
│ ├─ sample1.txt
│ └─ dir
│ ├─ sample1.txt
│ └─ sample2.txt
└─ user2
├─ sample1.txt
└─ dir
├─ sample1.txt
└─ sample2.txt
-i
-iオプションは、コピー先に同名のファイルが存在する場合に上書きするかどうかを確認するためのオプションです。
home
├─ dir1
│ └─ sample.txt
└─ dir2
└─ sample.txt
【homeディレクトリにいる場合】
[tomoji@10moji-blog.com home]$ cp -i dir1/sample.txt dir2/
overwrite dir/sample1.txt? Y
-v
-vオプションは、コピー操作が実行されるたびに、コピー元とコピー先の情報が表示されます。
home
├─ dir1
│ └─ sample.txt
└─ dir2
【homeディレクトリにいる場合】
[tomoji@10moji-blog.com home]$ cp -v dir1/sample.txt dir2/
dir1/sample.txt -> dir2/sample.txt
【コピー後】
home
├─ dir1
│ └─ sample.txt
└─ dir2
└─ sample.txt
-u
-uオプションは、新しいファイルのみをコピーし、古いファイルはスキップします。
dir
├─ sample1.txt
├─ sample2.txt
└─ sample3.txt
【dirディレクトリにいる場合】
[tomoji@10moji-blog.com dir]$ ls -l
-rw-r--r-- 1 tomoji tomoji 0 Jan 2 00:02 sample1.txt
-rw-r--r-- 1 tomoji tomoji 0 Jan 2 00:01 sample2.txt
-rw-r--r-- 1 tomoji tomoji 0 Jan 2 00:03 sample3.txt
[tomoji@10moji-blog.com dir]$ cp -u sample1.txt sample2.txt
[tomoji@10moji-blog.com dir]$ cp -u sample1.txt sample3.txt
[tomoji@10moji-blog.com dir]$ ls -l
-rw-r--r-- 1 tomoji tomoji 0 Jan 2 00:02 sample1.txt
-rw-r--r-- 1 tomoji tomoji 0 Jan 2 00:02 sample2.txt
-rw-r--r-- 1 tomoji tomoji 0 Jan 2 00:03 sample3.txt
【コピー後】
dir
├─ sample1.txt
├─ sample2.txt【古いデータのみ更新】
└─ sample3.txt
-l
-lオプションは、ファイルをコピーする際にハードリンクを作成するためのオプションです。
dir
└─ sample1.txt
===============
【sample1.txtに中身】
このテキストはサンプルテキスト1になります。
【dirディレクトリにいる場合】
[tomoji@10moji-blog.com dir]$ cat dir/sample1.txt
このテキストはサンプルテキスト1になります。
[tomoji@10moji-blog.com dir]$ cp -l dir/sample1.txt dir/sample2.txt
[tomoji@10moji-blog.com dir]$ cat dir/sample2.txt
このテキストはサンプルテキスト1になります。
[tomoji@10moji-blog.com dir]$ vi dir/sample1.txt
【sample1.txtの内容を変更】
このテキストは変更された内容です。
[tomoji@10moji-blog.com dir]$ cat dir/sample1.txt
このテキストは変更された内容です。
[tomoji@10moji-blog.com dir]$ cat dir/sample2.txt
このテキストは変更された内容です。
【コピー後】
dir
├─ sample1.txt
└─ sample2.txt
-s
-sオプションは、ファイルをコピーする際にシンボリックリンクを作成するためのオプションです。
dir
└─ sample1.txt
===============
【sample.txtに中身】
これはテキスト1の内容です。
【dirディレクトリにいる場合】
[tomoji@10moji-blog.com dir]$ ll
-rw-r--r-- 1 tomoji tomoji 0 Jan 2 00:01 sample1.txt
[tomoji@10moji-blog.com dir]$ cat sample1.txt
これはテキスト1の内容です。
[tomoji@10moji-blog.com dir]$ cp -s sample1.txt sample2.txt
[tomoji@10moji-blog.com dir]$ ll
-rw-r--r-- 1 tomoji tomoji 0 Jan 2 00:01 sample1.txt
lrwxr-xr-x 1 tomoji tomoji 0 Jan 2 00:02 sample2.txt -> sample1.txt
[tomoji@10moji-blog.com dir]$ cat sample2.txt
これはテキスト1の内容です。
【sample1.txt内容を変更】
これはテキスト1の内容です。
内容を変更します。
【dirディレクトリにいる場合】
[tomoji@10moji-blog.com dir]$ cat sample1.txt
これはテキスト1の内容です。
内容を変更します。
[tomoji@10moji-blog.com dir]$ cat sample2.txt
これはテキスト1の内容です。
内容を変更します。
【コピー後】
dir
├─ sample1.txt
└─ sample2.txt【sample1.txtを参照】
-p
-pオプションは、コピーする際にファイルの属性を保持するためのオプションです。
dir
∟sample1.txt
【dirディレクトリにいる場合】
[tomoji@10moji-blog.com dir]$ ll
-rw-r--r-- 1 tomoji tomoji 0 Jan 2 00:01 sample1.txt
[tomoji@10moji-blog.com dir]$ cp sample1.txt sample2.txt
[tomoji@10moji-blog.com dir]$ ll
-rw-r--r-- 1 tomoji tomoji 0 Jan 2 00:01 sample1.txt
-rw-r--r-- 1 tomoji tomoji 0 Jan 2 00:02 sample2.txt
[tomoji@10moji-blog.com dir]$ chmod 777 sample1.txt
[tomoji@10moji-blog.com dir]$ ll
-rwxrwxrwx 1 tomoji tomoji 0 Jan 2 00:02 sample1.txt
-rw-r--r-- 1 tomoji tomoji 0 Jan 2 00:01 sample2.txt
[tomoji@10moji-blog.com dir]$ cp -p sample1.txt sample3.txt
[tomoji@10moji-blog.com dir]$ ll
-rwxrwxrwx 1 tomoji tomoji 0 Jan 2 00:02 sample1.txt
-rw-r--r-- 1 tomoji tomoji 0 Jan 2 00:01 sample2.txt
-rwxrwxrwx 1 tomoji tomoji 0 Jan 2 00:02 sample3.txt
【コピー後】
dir
├─ sample1.txt
├─ sample2.txt
└─ sample2.txt【権限も含めコピーされる】
–parents
–parentsは、コピーする際に親ディレクトリも含めコピーするオプションです。
home
├─ dir1
│ └─ sample1.txt
└─ dir2
【homeディレクトリにいる場合】
[tomoji@10moji-blog.com home]$ cp --parents dir1/sample1.txt dir2/
【コピー後】
home
├─ dir1
│ └─ sample1.txt
└─ dir2
└─ dir1【ディレクトリも含めコピー】
└─ sample1.txt