linux命令-cp命令

cp命令

简介

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

语法

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

选项

  • -a-archive : 等于-dR –preserve=all,与同时指定 -dpR 这三个选项效果一样,用于复制整个目录,包括目录中的子目录等都递归的复制,而且还要保持文件的访问模式,所有者,时间戳等属性与原文件一样。
  • --backup[=CONTROL] : 为每个已存在的目标文件创建备份,类似–backup 但不接受参数
  • -b : 类似–backup 但不接受参数
  • --copy-contents : 在递归(recursive)处理时复制特殊文件内容
  • -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 : copy only when the SOURCE file is newer than the destination file or when the destination file is missing
  • -v, --verbose : 详细显示命令执行的操作。
  • -x, --one-file-system 复制的文件或目录存放的文件系统,必须与cp指令执行时所处的文件系统相同,否则不复制,亦不处理位于其他分区的文件
  • -Z, --context=CONTEXT : set security context of copy to CONTEXT`

实例

1、将文件a.txt 复制成文件b.txt
[root@VM_0_4_centos cp]# touch a.txt
[root@VM_0_4_centos cp]# cp a.txt b.txt
[root@VM_0_4_centos cp]# ll
total 0
-rw-r--r-- 1 root root 0 Jun 21 19:59 a.txt
-rw-r--r-- 1 root root 0 Jun 21 19:59 b.txt
2、将文件a.txt复制成文件b.txt,显示详细信息 
[root@VM_0_4_centos cp]# cp -v a.txt c.txt
‘a.txt’ -> ‘c.txt
3、复制文件,只有源文件较目的文件的修改时间新时,才复制文件
[root@VM_0_4_centos cp]# cp -uv a.txt d.txt
‘a.txt’ -> ‘d.txt’
[root@VM_0_4_centos cp]# ll
-rw-r--r-- 1 root root 0 Jun 21 19:59 a.txt
-rw-r--r-- 1 root root 0 Jun 21 19:59 b.txt
-rw-r--r-- 1 root root 0 Jun 21 21:46 c.t
-rw-r--r-- 1 root root 0 Jun 21 21:47 c.txt
-rw-r--r-- 1 root root 0 Jun 21 21:48 d.txt

[root@VM_0_4_centos cp]# cp -uv a.txt d.txt
[root@VM_0_4_centos cp]# ll
total 0
-rw-r--r-- 1 root root 0 Jun 21 19:59 a.txt
-rw-r--r-- 1 root root 0 Jun 21 19:59 b.txt
-rw-r--r-- 1 root root 0 Jun 21 21:46 c.t
-rw-r--r-- 1 root root 0 Jun 21 21:47 c.txt
-rw-r--r-- 1 root root 0 Jun 21 21:48 d.txt
4、采用交互方式将文件a.txt复制成文件d.txt
[root@VM_0_4_centos cp]# cp -i  a.txt e.txt
cp: overwrite ‘e.txt’? y
5、将文件a.txt复制成d.txt,因为目的文件已经存在,所以指定使用强制复制的模式 
[root@VM_0_4_centos cp]# \cp -f a.txt e.txt
6、递归将目录dir1复制到目录dir2下面(此时dir2不存在)
[root@VM_0_4_centos cp]# cp dir1 dir2
cp: omitting directory ‘dir1’
[root@VM_0_4_centos cp]# cp -r dir1 dir2
7、复制时保留文件属性
[root@VM_0_4_centos cp]# cp -p a.txt f.txt
[root@VM_0_4_centos cp]# ll
total 8
-rw-r--r-- 1 root root    0 Jun 21 19:59 a.txt
-rw-r--r-- 1 root root    0 Jun 21 19:59 b.txt
-rw-r--r-- 1 root root    0 Jun 21 21:46 c.t
-rw-r--r-- 1 root root    0 Jun 21 21:47 c.txt
drwxr-xr-x 2 root root 4096 Jun 21 22:03 dir1
drwxr-xr-x 2 root root 4096 Jun 21 22:04 dir2
-rw-r--r-- 1 root root    0 Jun 21 21:48 d.txt
-rw-r--r-- 1 root root    0 Jun 21 21:59 e.txt
-rw-r--r-- 1 root root    0 Jun 21 19:59 f.txt
8、复制时产生备份文件(如果文件存在的话,会对之前的文件备份)
[root@VM_0_4_centos cp]# cp -bv c.txt  /tmp/
cp: overwrite ‘/tmp/c.txt’? 
[root@VM_0_4_centos cp]# cp -bv c.txt  /tmp/
cp: overwrite ‘/tmp/c.txt’? y
‘c.txt’ -> ‘/tmp/c.txt’ (backup: ‘/tmp/c.txt~’)
9、复制的 a.txt 建立一个连结档 a_link.txt
[root@VM_0_4_centos cp]# cp -s a.txt a_link
lrwxrwxrwx 1 root root    5 Jun 21 22:25 a_link -> a.txt
-rw-r--r-- 1 root root    0 Jun 21 19:59 a.txt
10、不随符号链接拷贝原文件
[root@VM_0_4_centos cp]# cp a_link.txt b_bink.txt
[root@VM_0_4_centos cp]# ll
total 0
lrwxrwxrwx 1 root root 5 Jun 21 22:32 a_link.txt -> a.txt
-rw-r--r-- 1 root root 0 Jun 21 22:31 a.txt
-rw-r--r-- 1 root root 0 Jun 21 22:32 b_bink.txt

[root@VM_0_4_centos cp]# cp -P a_link.txt c_bink.txt
[root@VM_0_4_centos cp]# ll
total 0
lrwxrwxrwx 1 root root 5 Jun 21 22:32 a_link.txt -> a.txt
-rw-r--r-- 1 root root 0 Jun 21 22:31 a.txt
-rw-r--r-- 1 root root 0 Jun 21 22:32 b_bink.txt
lrwxrwxrwx 1 root root 5 Jun 21 22:33 c_bink.txt -> a.txt
11、指定备份文件尾标
[root@VM_0_4_centos cp]# cp -v -S _back a.txt /tmp/
cp: overwrite ‘/tmp/a.txt’? y
‘a.txt’ -> ‘/tmp/a.txt’ (backup: ‘/tmp/a.txt_back’) 
#默认情况
[root@VM_0_4_centos cp]# cp -bv  a.txt /tmp/
cp: overwrite ‘/tmp/a.txt’? y
‘a.txt’ -> ‘/tmp/a.txt’ (backup: ‘/tmp/a.txt~’)

参考

http://www.cnblogs.com/xqzt/p/5398904.html

  • 24
    点赞
  • 126
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: linux cp -rf命令是用来复制文件或目录的命令。其中,-r表示递归复制,即复制目录及其子目录中的所有文件和子目录;-f表示强制复制,即覆盖已存在的文件或目录。该命令的语法为:cp -rf 源文件或目录 目标文件或目录。 ### 回答2: Linux中的cp命令被用来复制文件和目录。其中-r选项使得cp递归地对目录进行操作,无论目录中是否有子目录,都会进行复制。-f选项表示强制复制,如果目标文件已经存在,则会强制覆盖。因此,cp -rf命令是对目录进行递归强制复制的命令。 使用cp -rf命令,可以在不修改源文件的情况下创建一个副本,该副本与源文件具有相同的所有内容和权限。当您需要将整个目录结构复制到另一个位置时,cp -rf命令是必不可少的工具。使用这个命令,可以快速、方便地复制任何大小的文件和目录,并保留所有的属性和权限。 由于-cp -rf命令是递归的,因此在目标位置上,如果已经存在同名的目录,则会经命令行提示,询问是否要覆盖整个目录。如果目标目录不存在,则cp -rf命令将创建一个新目录,并复制所有文件和子目录。此外,cp -rf命令可以在两个文件系统之间复制文件,并且可以复制隐藏文件和文件夹的内容。 总之,Linuxcp -rf命令是一个非常强大的工具,它可以帮助用户以最快的速度复制目录和文件,保存所有的权限和属性。无论是操作文件还是备份数据,都可以通过cp -rf命令来实现。 ### 回答3: Linux cp -rf命令Linux操作系统中的一个命令行工具,它的主要作用是将一个目录或文件复制到另一个目录或文件中。这个命令的-r选项表示可以递归地复制整个目录树,而-f选项表示即使被复制的文件已经存在于目标目录中,也会被覆盖。 cp命令Linux中用于复制文件和目录的命令。如果我们要复制一个目录,通常情况下我们需要递归复制目录中的所有文件、子目录和文件夹。这时就需要使用cp -r命令了。但是如果源目录中已经存在一个同名的目录,命令行会显示“cp: cannot overwrite directory”的错误,提示目录已存在。 这时候如果我们想强制复制,就可以使用cp -rf命令,其中-r选项表示递归复制,-f选项表示强制覆盖同名文件。这个命令还可以用来复制目录的权限、拷贝符号链接和保留文件原始所有者等。 下面是一些关于Linux cp -rf的使用技巧: 1. 复制一个目录到另一个目录:cp -rf /home/user/dir /tmp/ 2. 复制多个文件到一个目录下:cp -rf file1.txt file2.txt /tmp/ 3. 复制目录并保留原文件权限:cp -rp /home/user/dir /tmp/ 4. 复制文件并保留元数据:cp -p file1.txt /tmp/ 5. 追加一个目录到目标目录下:cp -r /home/user/dir/* /tmp/ 总之, Linux cp -rf命令Linux操作系统中非常常用的一个工具,它可以帮助我们轻松地复制和移动文件和目录,同时也给我们提供了很多有用的选项。掌握这个命令,可以提高我们的工作效率。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值