linuxcp命令代码,Linuxcp命令(⽰例代码)
Linux系统中cp(copy)命令是⽤来复制⽂件或者⽬录的。
man cp可以获得cp的详细描述
命令格式:
cp [OPTION]... [-T] SOURCE DEST //cp [选项]…[-T]源⽬的
cp [OPTION]... DIRECTORY // cp [选项]…源…⽬录
cp [OPTION]... -t // cp [选项]…-t ⽬录 源…
功能:
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
//将源⽂件复制⾄⽬标⽂件,或将多个源⽂件复制⾄⽬标⽬录。
参数:
-
a 该选项通常在拷贝⽬录时使⽤。它保留链接、⽂件属性,并递归地拷贝⽬录,其作⽤等于dpR选项的组合。
-d 拷贝时保留链接:若源⽂件为连接⽂件的属性(linkfile),则复制连接⽂件属性⽽⾮⽂件本⾝
-f 强制的意思,删除已经存在的⽬标⽂件⽽不提⽰。 (慎⽤)
-i 和f选项相反,在覆盖⽬标⽂件之前将给出提⽰要求⽤户确认。回答y时⽬标⽂件将被覆盖,是交互式拷贝。(最常⽤)
-p 此时cp除复制源⽂件的内容外,还将把其修改时间和访问权限也复制到新⽂件中。(备份常⽤)
-r 递归持续复制,⽤于⽬录的复制⾏为:若给出的源⽂件是⼀⽬录⽂件,此时cp将递归复制该⽬录下所有的⼦⽬录和⽂件。此时⽬标⽂件必须为⼀个⽬录名。
-l 不作拷贝,只是链接⽂件,⽽⾮复制⽂件本⾝。
-s 复制成符号链接⽂件(symbolic link),即“快捷⽅式”⽂件
-u 若⽬标⽐来源⽂件旧时,才更新,常⽤于“备份”⼯作
命令⽰列:
1.-i参数⽰例[[email protected] ~]# cp ~/.bashrc /tmp/bashrc 复制和更名操作
[[email protected] ~]# cp -i ~/.bashrc /tmp/bashrc 由于已经复制,加⼊-i参数后,覆盖前会做提⽰
cp: overwrite `/tmp/bashrc‘? y 按y表⽰确认
2.-a参数⽰例[[email protected] ~]# cd /tmp 进⼊/tmp⽬录
[[email protected] tmp]# cp /var/log/wtmp . 要想复制到当前⽬录,最后要加"."
[[email protected] tmp]# ls -l /var/log/wtmp wtmp
-rw-rw-r--. 1 root utmp 24960 Apr 6 14:06 /var/log/wtmp
-rw-r--r-- 1 root root 24960 Apr 6 14:39 wtmp
在不加任何参数的情况下,某些属性/权限会改变
⽂件的创建时间也不同了
如果要将⽂件的所有特性都⼀起复制过来,可以加上-a,如下所⽰[[email protected] tmp]# cp -a /var/log/wtmp wtmp3
[[email protected] tmp]# ls -l /var/log/wtmp wtmp3
-rw-rw-r--. 1 root utmp 24960 Apr 6 14:06 /var/log/wtmp
-rw-rw-r--. 1 root utmp 24960 Apr 6 14:06 wtmp3
整个数据特性完全⼀样,这就是-a的特性
由于具有这个特性,因此当我们在进⾏备份的时候,某些需要特别注意的特殊权限⽂件, 例如密码档 (/etc/shadow) 以及⼀些配置档,就不能直接以 cp
来复制,⽽必须要加上 -a 或者是 -p 等等可以完整复制⽂件权限的选项才⾏!另外,如果你想要复制⽂件给其他的使⽤者,
无法复制文件也必须要注意到⽂件的权限(包含读、写、运⾏以及⽂件拥有者等等), 否则,其他⼈还是⽆法针对你给予的⽂件进⾏修订的动作喔!注意注意!
3.-r⽰例,将⽬录下的所有⽬录包括⼦⽬录陆续复制到另外⼀个⽬录[[email protected] tmp]# cp /etc/ /tmp
cp: omitting directory `/etc/‘ 如果是⽬录,不能直接复制
[[email protected] tmp]# cp -r /etc/ /tmp 要加⼊-r才能复制⽬录
[[email protected] tmp]#
4.-s,-l⽰例[[email protected] tmp]# ls -l bashrc
-rw-r--r-- 1 root root 206 Apr 6 14:24 bashrc
[[email protected] tmp]# cp -s bashrc bashrc_slink 创建软链接,就是⼀个快捷⽅式
[[email protected] tmp]# cp -l bashrc bashrc_hlink 创建硬链接
[[email protected] tmp]# ls -l bashrc*
-rw-r--r-- 2 root root 206 Apr 6 14:24 bashrc 源⽂件i-node,是2
-rw-r--r-- 2 root root 206 Apr 6 14:24 bashrc_hlink 硬链接i-node,是2
lrwxrwxrwx 1 root root 6 Apr 6 15:07 bashrc_slink -> bashrc 软链接i-node,还是1
5.-u⽰例,若~./bashrc⽐/tmp/bashrc新才复制过来[[email protected] tmp]# cp -u ~/.bashrc /tmp/bashrc 常⽤于备份⼯作
6.-d⽰例,将bashrc_slink复制成为bashrc_slink_1与bashrc_slink_2[[email protected] tmp]# cp bashrc_slink bashrc_slink_1
[[email protected] tmp]# cp -d bashrc_slink bashrc_slink_2
[[email protected] tmp]# ls -l bashrc bashrc_slink*
-rw-r--r-- 2 root root 206 Apr 6 14:24 bashrc
lrwxrwxrwx 1 root root 6 Apr 6 15:22 bashrc_slink -> bashrc
-rw-r--r-- 1 root root 206 Apr 6 15:22 bashrc_slink_1 与源⽂件相同
lrwxrwxrwx 1 root root 6 Apr 6 15:22 bashrc_slink_2 -> bashrc 是连接⽂件
这个例⼦也是很有趣喔!原本复制的是连结档,但是却将连结档的实际⽂件复制过来了
也就是说,如果没有加上任何选项时,cp复制的是原始⽂件,⽽⾮连结档的属性!
若要复制连结档的属性,就得要使⽤ -d 的选项了!如 bashrc_slink_2 所⽰。
7.使⽤zdw⽤户,完整复制[[email protected] ~]$ cp -a /var/log/wtmp /tmp/zdw_wtmp
[[email protected] ~]$ ls -l /var/log/wtmp /tmp/zdw_wtmp
-rw-rw-r-- 1 zdw zdw 24960 Apr 6 14:06 /tmp/zdw_wtmp
-rw-rw-r--. 1 root utmp 24960 Apr 6 14:06 /var/log/wtmp
由于zdw的⾝份并不能随意修改⽂件的拥有者与组,因此虽然能够复制wtmp的相关权限与时间等属性,但是与拥有者、组相关的,原本zdw⾝份⽆法进⾏的动作,即使加上
-a 选项,也是⽆法达成完整复制权限的!
8.把多个数据⼀次复制到指定⽬录下[[email protected] tmp]# cp ~/.bashrc ~/.bash_history /tmp 可以填写多个数据,复制到⼀个⽬录下
以上操作,完全参照鸟哥的私房菜⼀书
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论