Linux命令-cp

Posted by 周思进 on May 24, 2020

cp命令应该是在Linux环境下极常用的一个命令,基本用来将文件拷贝到另一个目录下,也可以将多个文件同时拷贝到一个目录下;下面对该命令做一些常用选项说明。

-p :
保留源文件或者目录的属性,属性包括:文件修改时间、文件访问时间、文件标志、用户ID、组ID等文件访问权限。

比如工作中工程项目编译,可能会有一些文件的拷贝操作,而makefile会依赖文件是否有过修改决定是否重新编译相关源码,这里就需要注意拷贝文件的时候带上 -p 选项。

-R, -r :
如果拷贝的是目录,则必须要指定使用 -R 或者 -r 选项,否则拷贝命令会失败(删除的时候也一样);该命令会将目录及目录下的整个内容一同拷贝过去;对于软链接文件,会将软链接属性一同拷贝过去,不过对于硬链接则不行。

-d :
该选项就是拷贝的文件如果是软链接,则拷贝后的目标文件也同样是个软链接,和源链接文件指向同一个源文件

-a :
如果上面三个选项不好记,而你拷贝的时候需要都保持上面这些特性,那使用 -a 选项就性,该选项跟指定 -dpR 效果是一样的


下面几个选项跟目标文件已存在有关

-f :
该选项主要针对拷贝的目标文件已经存在了,基本就是进行覆盖操作,有些情况下,目标文件已存在可能拷贝会失败,而你明确是要覆盖掉的,可以带上这个选项,强行覆盖。

-i :
该选项和上面 -f 选项则相反了,如果遇到已经存在的文件,则会提示用户是否要进行覆盖操作

-b :
如果拷贝的目标文件已存在,则会先将原有目标文件进行备份,再进行拷贝

-n :
如果拷贝的目标文件已存在,则不会进行覆盖拷贝

-u :
只有当源文件的更新时间比目标文件时间新时才会进行拷贝


其它补充说明:

拷贝操作如果拷贝的目标地址是在同分区的,不需要拷贝inode对应的数据,则很快就完成了,如果不在同分区则会比较慢,是否是同分区,可以通过df命令查看;mv也是一样的道理。