Linux cp 文件或目录复制命令

    cp 命令的基本格式如下:

[root@localhost ~]# cp [选项] 源文件 目标文件

选项:

  • -a:相当于 -d、-p、-r 选项的集合,这几个选项我们一一介绍;

  • -d:如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接;

  • -i:询问,如果目标文件已经存在,则会询问是否覆盖;

  • -l:把目标文件建立为源文件的硬链接文件,而不是复制源文件;

  • -s:把目标文件建立为源文件的软链接文件,而不是复制源文件;

  • -p:复制后目标文件保留源文件的属性(包括所有者、所属组、权限和时间);

  • -r:递归复制,用于复制目录;

  • -f:  强制覆盖目标文件,即不需要用户再次确认

  • -u:若目标文件比源文件有差异,则使用该选项可以更新目标文件,此选项可用于对文件的升级和备用。


-i默认已经加上,常用-r、-f,拷贝目录时需要加上-r选项。

语法:

场景 | 语法样例
—— | ————
单源复制 | cp [OPTION]… [-T] SOURCE DEST
多源复制 | cp [OPTION]… SOURCE… DIRECTORY
多源复制 | cp [OPTION]… -t DIRECTORY SOURCE…

单源复制(单个源 –> 单个目标)
如果目标不存在,则事先创建此文件,并复制源文件的数据流至目标中;
如果目标存在,且目标是非目录文件,则覆盖目标文件;
如果目标存在,且目标是目录文件,则现在目标目录下创建一个与源文件同名的文件,并将源文件数据流复制到新创建的目标文件中。

多源复制(多个源 –> 目录)
如果目标不存在,则会报错;
如果目标存在,但目标不是目录,则也会报错;
如果目标存在,且目标是目录,则会分别复制源文件中的每一个文件至目标目录中,并保持原名。

实例:

    1,默认保持原文件或目录名称,如图1所示

    图片关键词

图2 保持原来名称复制文件


 2,修改原文件或目录名称复制操作,如图2所示。

图片关键词

图2 复制文件时修改源文件名称



3,复制一个目录需要使用-r选项,不然是无法复制,如图3所示。

图片关键词

图3 复制目录必须使用-r参数选项


3,-f作用于覆盖已有同名称的文件或目录无需提醒用户,如图4所示


图片关键词

图4 因默认选项使-f失效

因cp属于别名命令,在别名命令中默认使用上了-i选项,所有导致-f强制覆盖目标文件无需提醒失效,解决方法有两种,1、可以使用\cp 执行cp命令时不走alias 。2、临时取消cp的别名命令再使用,如图5所示。

图片关键词

图5 使用“\”或者取消别名命令使-f生效