Linux常用命令(一) cp:复制
语法
1 | cp [-adfilprsu] 源文件(source) 目标文件(destination) |
选项与参数
1 | -a : 相当于dpr参数组合,至于dpr请参考下列说明;(常用) |
例一:用root身份,将家目录下的.bashrc文件复制到/tmp下,并重命名为bashrc
重复操作两次,由于/tmp已经存在bashrc了,加上-i选项后,会在覆盖前对你进行询问是否确定,可以按下n否定或者y确认。
例二:切换到/tmp,并将/var/log/wtmp复制到/tmp且观察属性。
在不加任何选项的情况下,文件的某些属性/权限会改变。还有,就连文件创建的时间也改变了。如果你想将文件的所有特性都复制过来,可以加上-a,如下图:
整个数据的所有特性完全一样。这就是-a的特性。
在默认条件下,cp的源文件与目标文件的权限是不同的,目标文件的拥有者通常会是命令操作者本身。
如例二中由于我是root用户,因此复制过来的文件拥有者与用户组就变成了root所有。
由于这个特性,我们在备份某些需要特别注意权限的文件时,例如密码文件(/etc/shadow)以及一些配置文件,就不能直接cp来复制,而必须加上-a或者-p等可以完整复制文件权限的才行。另外,如果你要复制文件给其他用户时,也必须要注意文件的权限(包含读、写、执行以及文件的拥有者等),否则你的小伙伴还是无法使用啊!
例三:复制/etc/这个目录下的所有内容到/tmp下面。
图片这种第二行的意思是/etc/是一个目录,你需要加上-r选项。-r是可以复制目录,但是,文件与目录的权限可能会被改变。所以,也可以使用【cp -a /etc/ /tmp】来执行,尤其是在备份的时候。
例四:将例一复制的bashrc建立一个符号链接文件(symbolic link)。
使用-l及-s都会创建所谓的链接文件(link file),但是这两种链接文件却有不一样的情况。-l就是所谓的硬链接(hard link),而-s则是符号链接(symbolic link),即常说的软连接,简单来说bashrc_slink是一个快捷方式,这个快捷方式会链接到bashrc。所以你会看到文件右侧会有指向(->)的符号。
至于bashrc_hlink文件与bashrc文件的属性与权限完全一模一样,与链接前的唯一差异就是第二栏的link数由1变成了2。
例五:当~/.bashrc比/tmp/bashrc新时,才复制过来。
-u的特性是只有目标文件与源文件有差异时才复制。所以常用在备份工作中。
例六:将例四创建的bashrc_slink复制成bashrc_slink_1与bashrc_slink_2。
在不加任何参数的时候,cp复制的是源文件,而非链接文件的属性。如果想要复制链接文件的属性,就得要使用-d的选项了,如bashrc_slink_2的创建。
例七:将家目录的.bashrc及.bash_history复制到/tmp下面。
可以将多个文件一次复制到同一个目录中去,记住,最后一个才是目标目录。
PS: 本文参考来自-鸟哥的Linux私房菜、菜鸟教程