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 ~]#
\:执行时不使用别名