Linux 常用命令之cp,一个可以煮饭的工具;

cp


复制目录和文件

对于系统管理员来说,在文件系统中将文件和目录从一个位置复制到另外一个位置是家常便饭,而cp就是可以煮饭的工具之一。
cp需要源对象和目标对象,源对象在前,目标对象在后面。

1. 常用选项

基本用法

[root@local tmp]# ll
total 0
-rw-rw-r--. 1 gentoo gentoo 0 Jul 29 09:28 test.txt
[root@local tmp]# stat test.txt 
  File: `test.txt'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 802h/2050d  Inode: 1310723     Links: 1
Access: (0664/-rw-rw-r--)  Uid: (  500/  gentoo)   Gid: (  500/  gentoo)
Access: 2016-07-29 09:29:03.019982074 -0400
Modify: 2016-07-29 09:28:08.737003238 -0400
Change: 2016-07-29 09:28:08.737003238 -0400
[root@local tmp]# cp test.txt /
[root@local tmp]# stat test.txt 
  File: `test.txt'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 802h/2050d  Inode: 1310723     Links: 1
Access: (0664/-rw-rw-r--)  Uid: (  500/  gentoo)   Gid: (  500/  gentoo)
Access: 2016-07-29 09:29:03.019982074 -0400
Modify: 2016-07-29 09:28:08.737003238 -0400
Change: 2016-07-29 09:28:08.737003238 -0400
[root@local tmp]# ll test.txt 
-rw-rw-r--. 1 gentoo gentoo 0 Jul 29 09:28 test.txt

这是最基本的用法,但是这样复制有些时候会修改文件或者目录的相应属性,不想修改就用接下来的选项

-a 保留原来所以参数进行复制文件或目录,因为cp不同对象执行时会修所所属主,所属组,时间、权限等等属性,可是有些时候进行对于原文件进行备份是我们不希望修改这些熟悉,所以就需要用-a 选项(常用选项)

root@local tmp]# ll 
total 0
-rw-rw-r--. 1 gentoo gentoo 0 Jul 29 09:28 test.txt
[root@local tmp]# stat test.txt 
  File: `test.txt'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 802h/2050d  Inode: 1310723     Links: 1
Access: (0664/-rw-rw-r--)  Uid: (  500/  gentoo)   Gid: (  500/  gentoo)
Access: 2016-07-29 09:28:08.737003238 -0400
Modify: 2016-07-29 09:28:08.737003238 -0400
Change: 2016-07-29 09:28:08.737003238 -0400
[root@local tmp]# cp -a test.txt /root/
[root@local tmp]# cd /root
[root@local ~]# ll test.txt 
-rw-rw-r--. 1 gentoo gentoo 0 Jul 29 09:28 test.txt
[root@local ~]# stat test.txt 
  File: `test.txt'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 802h/2050d  Inode: 786444      Links: 1
Access: (0664/-rw-rw-r--)  Uid: (  500/  gentoo)   Gid: (  500/  gentoo)
Access: 2016-07-29 09:28:08.737003238 -0400
Modify: 2016-07-29 09:28:08.737003238 -0400
Change: 2016-07-29 09:29:03.019982074 -0400

通过上面的实验,我们可以发现出来Change time改变,其他的属性均为改变。这就是-a选项的目的,不用-a选项都会修改,具体请自行尝试。
-i 若目标路径中存在原文件,会询问我们是否覆盖它

[root@local tmp]# cp -i /tmp/test.txt /
cp: overwrite `/test.txt'? y
[root@local tmp]# ll /test.txt
-rw-r--r--. 1 root root 0 Jul 29 09:41 /test.txt

-f 强制覆盖,当我们复制一个文件到目标路径时,若原文件存在于目标路径中,我们可以使用-f 强制覆盖,并且不提醒我们。、

[root@local tmp]# cp -f /tmp/test.txt /
[root@local tmp]#

–preserve[=ATTR_LIST] 用这个选项在复制过程选择时间戳,属主,权限是否保留 
mode: 权限 ownership: 属主属组 timestamp: links xattr context all 
-p: 等同–preserv=mode,ownership,timestamp

-u:仅仅当目标文件的内容比原文件新才进行复制

-R, -r, –recursive :复制当前目录及目录下面的文件一起

2.注意

Linux 常用命令之cp,一个可以煮饭的工具;

SRC是文件: 
如果目标不存在:新建DEST,并将SRC中内容填充至DEST中
如果目标存在: 
1.DEST是文件:将SRC中的内容覆盖至DEST中基于安全,建议为cp命令使用-i选项 
2.DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中
复制文件和目录cp 
cp SRC… DEST 
SRC…:多个文件 
DEST必须存在,且为目录,其它情形均会出错; 
cp SRC DEST 
SRC是目录:此时使用选项: -r 如果DEST不存在:则创建指定目录,复制SRC目录中所 
有文件至DEST中; 
如果DEST存在: 1. DEST是文件:报错 2.DEST是目录:

原创文章,作者:fighter,如若转载,请注明出处:http://www.178linux.com/26932

(0)
fighterfighter
上一篇 2016-08-02
下一篇 2016-08-02

相关推荐

  • 马哥教育网络班22期-第2周博客作业1

    1、Linux上的文件管理类命令都有哪些?其常用的使用方法及其相关示例演示。    文件管理类命令:cp、mv、rm 1.1 cp命令    cp – copy files and directories    复制文件或目录 【SYNOPSIS】    单源复制:c…

    Linux干货 2016-08-22
  • 加油吧!少年!—至我和我M25期的伙伴

    引用 衣带渐宽终不悔,为伊消得人憔悴。—王国维《人间词话》 转眼已到了27岁的年纪,不知道自己是否还称得上少年。公交上让座被小朋友成为叔叔也都是很多年的事了。哪怕再有一颗少年心现在也要肩负起整个家庭的责任。 从毕业已工作了将近六个年头,无聊的工作平凡的薪水已经使我厌倦。闭上眼睛以后需要赡养四个老人,还要照顾孩子以后这些难题映入脑海。曾经以为遥远的…

    Linux干货 2017-07-11
  • 正则表达式及文本处理

    正则表达式及文本处理 通俗点说,正则表达式就是处理字符串的方法,更加快速简洁的代表各个要求参数,一般用于描述字符排列和匹配模式的一种语法规则,通过正则表达式一些特殊符号的辅助,让用户轻易的查找、删除、替换一些字符串的处理程序。( ps:正则表达式和通配符不一样,通配符代表的是bash接口的一个功能,但正则表达式是一种字符串处理的表达方式,两者一定要分清楚。)…

    2017-06-11
  • 第1周作业

    第一周作业   1、描述计算机的组成及其功能。 计算机由运算器,控制器,存储器,输入装置和输出装置五大部件组成计算机 运算器,控制器:CPU 存储器:内存和硬盘 输入装置和输出装置:键鼠和显示器   2、按系列罗列Linux的发行版本,并描述不同版本的联系和区别。   linux的发行版本大致分为两大类,一类是商业公司维护的发行…

    Linux干货 2017-08-24
  • MySQL高级特性-合并表

    1. Merge Tables         如果愿意的话,可以把合并表看成一种较老的、有更多限制的分区表,但是它们也有自己的用处,并且能提供一些分区表不能提供的功能。 合并表实际是容纳真正的表的容器。可以使用特殊的UNION语法来CREATE TABLE。下面是一个合并表的例子: mysql> &n…

    Linux干货 2015-04-13
  • 马哥网络21-第5周作业

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; [root@localhost proc]# grep "^[[:space:]]\{1,\}" /boot/grub/grub.conf root (hd0,0) kernel /vmlinuz-2…

    Linux干货 2016-08-08