每天一个linux命令(6):cp

1、命令简介

cp(Copy file):将源文件复制至目标文件,或将多个源文件复制至目标目录。

2、用法

     cp [选项]... [-T] 源文件 目标文件
 或:cp [选项]... 源文件... 目录
 或:cp [选项]... -t 目录 源文件...

3、选项

  -a, --archive       等于-dR --preserve=all,与同时指定 -dpR 这三个选项效果一样,用于复制整个目录,包括目录中的子目录等都递归的复制,而且还要保持文件的访问模式,所有者,时间戳等属性与原文件一样。
      --backup[=CONTROL        为每个已存在的目标文件创建备份
  -b                类似--backup 但不接受参数
      --copy-contents        在递归处理是复制特殊文件内容
  -d                等于--no-dereference --preserve=links
  -f, --force            如果目标文件无法打开则将其移除并重试(当 -n 选项存在时则不需再选此项)
  -i, --interactive        覆盖前询问(使前面的 -n 选项失效),默认cp命令覆盖目标文件时是不会提示的,很多Linux发行版里的cp都被设置别名`cp -i`,其实作用就是给用户一个提醒。如果你不想被提示,那么请这样输入:\cp source target,或者使用cp命令的绝对路径/bin/cp
  -H                跟随源文件中的命令行符号链接
  -l, --link            对源文件建立硬链接,而非复制文件
  -L, --dereference        总是跟随符号链接
  -n, --no-clobber        不要覆盖已存在的文件(使前面的 -i 选项失效)
  -P, --no-dereference        不跟随源文件中的符号链接
  -p                等于--preserve=模式,所有权,时间戳
      --preserve[=属性列表    保持指定的属性(默认:模式,所有权,时间戳),如果可能保持附加属性:环境、链接、xattr 等
  -c                           same as --preserve=context
      --sno-preserve=属性列表    不保留指定的文件属性
      --parents            复制前在目标目录创建来源文件路径中的所有目录
  -R, -r, --recursive        递归复制目录及其子目录内的所有内容
      --reflink[=WHEN]        控制克隆/CoW 副本。请查看下面的内如。
      --remove-destination    尝试打开目标文件前先删除已存在的目的地文件 (相对于 --force 选项)
      --sparse=WHEN        控制创建稀疏文件的方式
      --strip-trailing-slashes    删除参数中所有源文件/目录末端的斜杠
  -s, --symbolic-link        只创建符号链接而不复制文件
  -S, --suffix=后缀        自行指定备份文件的后缀
  -t,  --target-directory=目录    将所有参数指定的源文件/目录 复制至目标目录
  -T, --no-target-directory    将目标目录视作普通文件
  -u, --update                 使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
  -v, --verbose                详细显示命令执行的操作。
  -x, --one-file-system        复制的文件或目录存放的文件系统,必须与cp指令执行时所处的文件系统相同,否则不复制,亦不处理位于其他分区的文件
  -Z, --context=CONTEXT        set security context of copy to CONTEXT

4、实例

实例1:将文件a.txt复制成文件b.txt
[[email protected] directory]# cp a.txt  b.txt
实例2:将文件a.txt复制成文件b.txt,显示详细信息 
[[email protected] directory]# cp -v a.txt  b.txt
`a.txt‘ -> `b.txt‘
实例3:复制文件,只有源文件较目的文件的修改时间新时,才复制文件
[[email protected] directory]# cp -uv  a.txt  c.txt

实例4:采用交互方式将文件a.txt复制成文件d.txt
[[email protected] directory]# cp -iv a.txt  d.txt
cp: overwrite `d.txt‘? y
`a.txt‘ -> `d.txt‘
实例5:将文件a.txt复制成d.txt,因为目的文件已经存在,所以指定使用强制复制的模式
[[email protected] directory]# cp -fv a.txt  d.txt
`a.txt‘ -> `d.txt‘

实例6:递归将目录dir1复制到目录dir2下面(此时dir2不存在)
[[email protected] directory]# cp -rv dir1 dir2
`dir1‘ -> `dir2‘
`dir1/c.txt‘ -> `dir2/c.txt‘
`dir1/a.txt‘ -> `dir2/a.txt‘
`dir1/b.txt‘ -> `dir2/b.txt‘
`dir1/d.txt‘ -> `dir2/d.txt‘
实例7:递归将目录dir1复制到目录dir2下面(此时dir2已经存在)
[[email protected] directory]# cp -rv  dir1  dir2
`dir1/c.txt‘ -> `dir2/dir1/c.txt‘
`dir1/a.txt‘ -> `dir2/dir1/a.txt‘
`dir1/b.txt‘ -> `dir2/dir1/b.txt‘
`dir1/d.txt‘ -> `dir2/dir1/d.txt‘
实例8:复制时保留文件属性
[[email protected] directory]# ll
total 0
-rwxrwxrwx 1 root root 0 Apr 16 16:54 a.txt
[[email protected] directory]# cp a.txt  /tmp/a1.txt
[[email protected] directory]# cp -p a.txt  /tmp/a2.txt
[[email protected] directory]# ll /tmp
total 12
-rwxr-xr-x  1 root  root     0 Apr 16 16:56 a1.txt
-rwxrwxrwx  1 root  root     0 Apr 16 16:54 a2.txt

实例9:复制时产生备份文件
[[email protected] directory]# cp -bv a.txt  /tmp/
`a.txt‘ -> `/tmp/a.txt‘
[[email protected] directory]# cp -bv a.txt  /tmp/
`a.txt‘ -> `/tmp/a.txt‘ (backup: `/tmp/a.txt~‘)
[[email protected] directory]# ll /tmp
total 0
-rwxr-xr-x 1 root root 0 Apr 16 17:02 a.txt
-rwxr-xr-x 1 root root 0 Apr 16 17:02 a.txt~
实例10:创建文件的硬链接(有同样的inode),而不是拷贝它们
[[email protected] dir1]# cp -l a.txt  b.txt
[[email protected] dir1]# cp a.txt  c.txt
[[email protected] dir1]# ls -li
总用量 0
4718769 -rw-r--r-- 2 root root 0 4月  16 17:18 a.txt
4718769 -rw-r--r-- 2 root root 0 4月  16 17:18 b.txt
4718772 -rw-r--r-- 1 root root 0 4月  16 17:28 c.txt
实例11:复制的 a.txt 建立一个连结档 a_link.txt
[[email protected] directory]# cp -sv a.txt  a_link.txt
`a.txt‘ -> `a_link.txt‘
[[email protected] directory]# ll
total 0
lrwxrwxrwx 1 root root 5 Apr 16 17:06 a_link.txt -> a.txt
-rwxrwxrwx 1 root root 0 Apr 16 16:54 a.txt
12:不随符号链接拷贝原文件
[[email protected] dir1]# ll
总用量 0
lrwxrwxrwx 1 root root 5 4月  16 17:30 a_link.txt -> a.txt
-rw-r--r-- 1 root root 0 4月  16 17:18 a.txt
[[email protected] dir1]# cp -P a_link.txt  c.txt
[[email protected] dir1]# ll
总用量 0
lrwxrwxrwx 1 root root 5 4月  16 17:30 a_link.txt -> a.txt
-rw-r--r-- 1 root root 0 4月  16 17:18 a.txt
lrwxrwxrwx 1 root root 5 4月  16 17:31 c.txt -> a.txt
实例13:指定备份文件尾标 
[[email protected] dir1]# cp -v -S _bak a.txt   /tmp/
"a.txt" -> "/tmp/a.txt"
[[email protected] dir1]# cp -v -S _bak a.txt   /tmp/
cp:是否覆盖"/tmp/a.txt"? y
"a.txt" -> "/tmp/a.txt" (备份:"/tmp/a.txt_bak")
时间: 2025-01-12 15:43:25

每天一个linux命令(6):cp的相关文章

每天一个linux命令:cp(8)

cp cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录.它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下.cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误 格式 cp [选项] [参数] 参数选项 参数 备注 -a 此参数的效果和同时指定"-dpR"参数相同: -d 当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录: -f 强行复制文件或目录,不

每天一个Linux命令(7): cp

cp命令         该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,同MSDOS下的copy命令一样,功能十分强大.         语法: cp [选项] 源文件或目录 目标文件或目录  说明:该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中. 该命令的各选项含义如下: -a      该选项通常在拷贝目录时使用.它保留链接.文件属性,并递归地拷贝目录,其作用等于dpR选项的组合. -d      拷贝时保留链接. -f      删除已经存在的目标文件而不提示.

每天一个linux命令(8):cp 命令

cp 命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在, 就会询问是否覆盖,不管你是否使用-i参数.但是如果是在shell脚本中执行cp时,没有-i参数时不会询问是否覆盖.这说明命令行和shell脚本的 执行方式有些不同. 1.命令格式: 用法: cp [选项]... [-T] 源 目的 或:cp [选项]... 源... 目录 或:cp [选项]... -t 目录 源... 2.命令功能: 将源文件复

【转载】每天一个Linux命令

每天一个linux命令(1)  : ls 命令 每天一个linux命令(2)  : cd 命令 每天一个linux命令(3)  : pwd 命令 每天一个linux命令(4)  : mkdir 命令 每天一个linux命令(5)  : rm 命令 每天一个linux命令(6)  : rmdir 命令 每天一个linux命令(7)  : mv 命令 每天一个linux命令(8)  : cp 命令 每天一个linux命令(9)  : touch 命令 每天一个linux命令(10): cat 命令

每天一个linux命令目录(转)

转载: http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html 开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列为每天一个linux命令.学习的主要参考资料为: 1.<鸟哥的linux私房菜> 2.http://codingstandards.iteye.com/blog/786653 3.linux命令五分钟系列 4.其他互联网资料,google,baidu等搜索引擎 一. 文件目录操作命令: 1.每天一个

Linux命令:cp、time、cut、awk 、获取文件大小命令

最近写了一个shell脚本,用到了cp.time.cut.awk命令,把他们的使用方法给写下来: 1.cp和mv cp命令:用来完成文件的复制,从源文件夹复制到目标文件夹.执行后源文件夹和目标文件夹均有源文件. mv 命令:用来移动文件.执行后,源文件夹中没有源文件.我经常用mv命令来重命名文件 注意:cp命令源文件夹与目标文件夹不能使同一个:而在mv中可以是同一个. 命令解析: #cp [-R] 源文件 目标文件夹 cp -R 参数 ---当复制整个文件夹时使用. #mv 源文件 目标文件夹

每天一个 Linux 命令(20):find命令之exec

find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了. exec解释: -exec  参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠. {}   花括号代表前面find查找出来的文件名. 使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的.在有些操作系统中只允许-ex

每天一个linux命令(20):find命令之exec

find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了. exec解释: -exec  参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠. {}   花括号代表前面find查找出来的文件名. 使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的.在有些操作系统中只允许-ex

[转]每天一个linux命令目录

http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html 开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列为每天一个linux命令.学习的主要参考资料为: 1.<鸟哥的linux私房菜> 2.http://codingstandards.iteye.com/blog/786653 3.linux命令五分钟系列 4.其他互联网资料,google,baidu等搜索引擎 一. 文件目录操作命令: 1.每天一个linu