1.cp命令用于复制文件和目录,如果指定两个以上的文件或目录进行复制,那么最后的目的目录一定是个已经存在的目录 。

常用参数:

-a :此参数的效果等同于 -pdr

-b :删除,覆盖目的文件之前先备份,备份文件会在字尾加上一个备份字符串

[root@zhu1 ~]# ll
总计 8
-rw-r--r-- 1 root root 20 08-31 12:10 txt1
-rw-r--r-- 1 root root 20 08-31 12:11 txt2
[root@zhu1 ~]# cp -b txt1 txt2
[root@zhu1 ~]# ll
总计 12
-rw-r--r-- 1 root root 20 08-31 12:10 txt1
-rw-r--r-- 1 root root 20 08-31 12:12 txt2
-rw-r--r-- 1 root root 20 08-31 12:11 txt2~

-d:当复制的源文件为链接文件时,不加-d参数,复制的是这个链接文件所指向的原始文件或目录,当加上-d参数时,复制的是这个链接文件,相当于再建立一个软连接。

[root@zhu1 ~]# ll
总计 4
-rw-r--r-- 1 root root 20 08-31 12:10 txt1
lrwxrwxrwx 1 root root  4 08-31 12:17 txt2 -> txt1
[root@zhu1 ~]# cp txt2 txt3
[root@zhu1 ~]# cp -d txt2 txt4
[root@zhu1 ~]# ll
总计 8
-rw-r--r-- 1 root root 20 08-31 12:10 txt1
lrwxrwxrwx 1 root root  4 08-31 12:17 txt2 -> txt1
-rw-r--r-- 1 root root 20 08-31 12:19 txt3
lrwxrwxrwx 1 root root  4 08-31 12:19 txt4 -> txt1
[root@zhu1 ~]#

-f :强行复制文件或目录 不管文件或目录是否存在

[root@zhu1 ~]# ll
总计 8
-rw-r--r-- 1 root root 20 08-31 12:10 txt1
-rw-r--r-- 1 root root 20 08-31 12:19 txt3
[root@zhu1 ~]# cp -f txt1 txt3
[root@zhu1 ~]# ll
总计 8
-rw-r--r-- 1 root root 20 08-31 12:10 txt1
-rw-r--r-- 1 root root 20 08-31 13:11 txt3

-i :覆盖文件前先询问是否覆盖

[root@zhu1 ~]# ll
总计 8
-rw-r--r-- 1 root root 20 08-31 12:10 txt1
-rw-r--r-- 1 root root 20 08-31 13:11 txt3
[root@zhu1 ~]# cp -i txt1 txt3
cp:是否覆盖“txt3”?

-l :对源文件建立硬链接,而不是复制文件

[root@zhu1 ~]# ll
总计 4
-rw-r--r-- 1 root root 20 08-31 12:10 txt1
[root@zhu1 ~]# cp -l txt1 txt2
[root@zhu1 ~]# ll
总计 8
-rw-r--r-- 2 root root 20 08-31 12:10 txt1
-rw-r--r-- 2 root root 20 08-31 12:10 txt2

-r或-R :二者在功能上是一样的,递归复制,将指定目录下的所有文件和子目录一并处理:针对目标目录是否存在的情况分为两种情况

cp -r zhu   jiang

当目标目录jiang不存在时,会建立jiang目录,并把zhu目录内的文件和子目录复制到jiang目录内

[root@zhu1 ~]# ll zhu/
总计 8
-rw-r--r-- 2 root root 20 08-31 12:10 txt1
-rw-r--r-- 2 root root 20 08-31 12:10 txt2
[root@zhu1 ~]# ll
总计 4
drwxr-xr-x 2 root root 4096 08-31 13:18 zhu
[root@zhu1 ~]# cp -r zhu/  jiang
[root@zhu1 ~]# ll
总计 8
drwxr-xr-x 2 root root 4096 08-31 13:18 jiang
drwxr-xr-x 2 root root 4096 08-31 13:18 zhu
[root@zhu1 ~]# ll jiang/
总计 8
-rw-r--r-- 1 root root 20 08-31 13:18 txt1
-rw-r--r-- 1 root root 20 08-31 13:18 txt2
[root@zhu1 ~]#

当目标目录jiang已经存在时,会直接把zhu目录复制到jiang目录内,成为jiang/zhu

[root@zhu1 ~]# ll zhu/ jiang/
jiang/:
总计 0
zhu/:
总计 8
-rw-r--r-- 2 root root 20 08-31 12:10 txt1
-rw-r--r-- 2 root root 20 08-31 12:10 txt2
[root@zhu1 ~]# cp -r zhu/ jiang/
[root@zhu1 ~]# ll zhu/ jiang/
jiang/:
总计 4
drwxr-xr-x 2 root root 4096 08-31 13:19 zhu
zhu/:
总计 8
-rw-r--r-- 2 root root 20 08-31 12:10 txt1
-rw-r--r-- 2 root root 20 08-31 12:10 txt2

-s:对源文件建立软连接

[root@zhu1 ~]# ll
总计 4
-rw-r--r-- 1 root root 20 08-31 12:10 txt1
[root@zhu1 ~]# cp -s txt1 txt2
[root@zhu1 ~]# ll
总计 4
-rw-r--r-- 1 root root 20 08-31 12:10 txt1
lrwxrwxrwx 1 root root  4 08-31 13:21 txt2 -> txt1

-p :(小写)保留源文件的权限,时间和所属主,组等属性

[root@zhu1 ~]# ll
总计 4
-rwxrw-rw- 1 mysql mysql 20 08-31 12:10 txt1
[root@zhu1 ~]# cp txt1 txt2
[root@zhu1 ~]# cp -p txt1 txt3
[root@zhu1 ~]# ll
总计 12
-rwxrw-rw- 1 mysql mysql 20 08-31 12:10 txt1
-rwxr--r-- 1 root  root  20 08-31 13:23 txt2
-rwxrw-rw- 1 mysql mysql 20 08-31 12:10 txt3

二:常用情况

当递归复制某目录。并保留权限时用

-rp

-a

系统默认别名:

[root@zhu2 ~]# alias | grep cp
alias cp='cp -i'

当在复制时强行使用覆盖的方法:

 

[root@zhu2 ~]# cp txt1 txt2
cp:是否覆盖“txt2”?
[root@zhu2 ~]# \cp txt1 txt2
[root@zhu2 ~]#

\:执行时不使用别名