`
zuzong
  • 浏览: 112810 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

linux cp命令 复制档案或目录

阅读更多
转自 http://www.linuxso.com/command/cp.html

cp (复制档案或目录)
[root@linux ~]# cp [-adfilprsu] 来源档(source) 目的檔(destination)
[root@linux ~]# cp [options] source1 source2 source3 …. directory
参数:
-a :相当于 -pdr 的意思;
-d :若来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身;
-f :为强制 (force) 的意思,若有重复或其它疑问时,不会询问使用者,而强制复制;
-i :若目的檔(destination)已经存在时,在覆盖时会先询问是否真的动作!
-l :进行硬式连结 (hard link) 的连结档建立,而非复制档案本身;
-p :连同档案的属性一起复制过去,而非使用预设属性;
-r :递归持续复制,用于目录的复制行为;
-s :复制成为符号连结文件 (symbolic link),亦即『快捷方式』档案;
-u :若 destination 比 source 旧才更新 destination !
最后需要注意的,如果来源档有两个以上,则最后一个目的文件一定要是『目录』才行!


范例:
范例一:将家目录下的 .bashrc 复制到 /tmp 下,并更名为 bashrc
[root@linux ~]# cd /tmp
[root@linux tmp]# cp ~/.bashrc bashrc
[root@linux tmp]# cp -i ~/.bashrc bashrc
cp: overwrite `basrhc’? n
# 重复作两次动作,由于 /tmp 底下已经存在 bashrc 了,加上 -i 参数,
# 则在覆盖前会询问使用者是否确定!可以按下 n 或者 y 呢!
# 但是,反过来说,如果不想要询问时,则加上 -f 这个参数来强制直接覆盖!

范例二:将 /var/log/wtmp 复制到 /tmp 底下
[root@linux tmp]# cp /var/log/wtmp . <==想要复制到目前的目录,最后的 . 不要忘
[root@linux tmp]# ls -l /var/log/wtmp wtmp
-rw-rw-r– 1 root utmp 71808 Jul 18 12:46 /var/log/wtmp
-rw-r–r– 1 root root 71808 Jul 18 21:58 wtmp
# 注意到了吗?!在不加任何参数的情况下,档案的所属者会改变,连权限也跟着改变了~
# 这是个很重要的特性!要注意喔!还有,连档案建立的时间也不一样了!
# 如果您想要将档案的所有特性都一起复制过来,可以加上 -a 喔!
[root@linux tmp]# cp -a /var/log/wtmp wtmp_2
[root@linux tmp]# ls -l /var/log/wtmp wtmp_2
-rw-rw-r– 1 root utmp 71808 Jul 18 12:46 /var/log/wtmp
-rw-rw-r– 1 root utmp 71808 Jul 18 12:46 wtmp_2
# 瞭了吧!整个资料特性完全一模一样ㄟ!真是不赖~这就是 -a 的特性!

范例三:复制 /etc/ 这个目录下的所有内容到 /tmp 底下
[root@linux tmp]# cp /etc/ /tmp
cp: omitting directory `/etc’ <== 如果是目录,不能直接复制,要加上 -r 的参数
[root@linux tmp]# cp -r /etc/ /tmp
# 还是要再次的强调喔! -r 是可以复制目录,但是,档案与目录的权限会被改变~
# 所以,也可以利用 cp -a /etc /tmp 来下达指令喔!

范例四:将范例一复制的 bashrc 建立一个连结档 (symbolic link)
[root@linux tmp]# ls -l bashrc
-rw-r–r– 1 root root 395 Jul 18 22:08 bashrc
[root@linux tmp]# cp -s bashrc bashrc_slink
[root@linux tmp]# cp -l bashrc bashrc_hlink
[root@linux tmp]# ls -l bashrc*
-rw-r–r– 2 root root 395 Jul 18 22:08 bashrc
-rw-r–r– 2 root root 395 Jul 18 22:08 bashrc_hlink
lrwxrwxrwx 1 root root 6 Jul 18 22:31 bashrc_slink -> bashrc
# 那个 bashrc_slink 是由 -s 的参数造成的,建立的是一个『快捷方式』,
# 所以您会看到在档案的最右边,会显示这个档案是『连结』到哪里去的!
# 至于那个 bashrc_hlink 有趣了!建立了这个档案之后, bashrc 与 bashrc_hlink
# 所有的参数都一样,只是,第二栏的 link 数改变成为 2 了~而不是原本的 1 喔!
# 这两种连结的方式的异同,我们会在下一章里面进行介绍的!

范例五:若 ~/.bashrc 比 /tmp/bashrc 新才复制过来
[root@linux tmp]# cp -u ~/.bashrc /tmp/bashrc
# 这个 -u 的特性,是在目标档案与来源档案有差异时,才会复制的。
# 所以,比较常被用于『备份』的工作当中喔! ^_^

范例六:将范例四造成的 bashrc_slink 复制成为 bashrc_slink_2
[root@linux tmp]# cp bashrc_slink bashrc_slink_2
[root@linux tmp]# ls -l bashrc_slink*
lrwxrwxrwx 1 root root 6 Jul 18 22:31 bashrc_slink -> bashrc
-rw-r–r– 1 root root 395 Jul 18 22:48 bashrc_slink_2
# 这个例子也是很有趣喔!原本复制的是连结档,但是却将连结档的实际档案复制过来了
# 也就是说,如果没有加上任何参数时,复制的是源文件,而非连结文件的属性!
# 若要复制连结文件的属性,就得要使用 -d 或者 -a 的参数了!

范例七:将家目录的 .bashrc 及 .bash_history 复制到 /tmp 底下
[root@linux tmp]# cp ~/.bashrc ~/.bash_history /tmp
# 可以将多个数据一次复制到同一个目录去!
这个 cp 的功能很多,而由于我们常常在进行一些数据的复制,所以也会常常用到这个指令的。 一般来说,我们如果去复制别人的数据 (当然,该档案您必须要有 read 的权限才行啊! ^_^) 时, 总是希望复制到的数据最后是我们自己的,所以,在预设的条件中, cp 的来源档与目的档的权限是不同的,目的档的拥有者通常会是指令操作者本身。举例来说, 上面的范例二中,由于我是 root 的身份,因此复制过来的档案拥有者与群组就改变成为 root 所有了! 这样说,可以明白吗?! ^_^

由于具有这个特性,因此,当我们在进行备份的时候,某些需要特别注意的特殊权限档案, 例如密码文件 (/etc/shadow) 以及一些设定档,就不能直接以 cp 来复制,而必须要加上 -a 或者是 -p 等等可以完整复制档案权限的参数才行!另外,如果您想要复制档案给其它的使用者,也必须要注意到档案的权限(包含读、写、执行以及档案拥有者等等),否则,其它人还是无法针对您给予的档案进行修订的动作喔!注意注意!

至于上面的范例当中,第四个范例是最有趣的,使用 -l 及 -s 都会建立所谓的连结档 (link file),但是这两种连结档确有不一样的展现情况。这是怎么一回事啊? 那个 -l 就是所谓的 hard link ,至于 -s 则是 symbolic link ,鸟哥这里先不介绍, 因为这个涉及 i-node 的相关知识,我们还没有介绍到,下一章再来讨论这个 link 的问题喔! 总之,由于 cp 有种种的档案属性与权限的特性,所以,在复制时,您必须要清楚的了解到:
• 是否需要完整的保留来源档案的信息?
• 来源档案是否为连结档 (symbolic link file)?
• 来源档是否为特殊的档案,例如 FIFO, socket 等?
• 来源文件是否为目录?

需要说明的是,为防止用户在不经意的情况下用cp命令破坏另一个文件,如用户指定的目标文件名已存在,用cp命令拷贝文件后,这个文件就会被新源文件覆盖,因此,建议用户在使用cp命令拷贝文件时,最好使用i选项。

分享到:
评论

相关推荐

    如何使用 cp 命令在 Linux 中复制目录.docx

    如何使用 cp 命令在 Linux 中复制目录

    Linux cp命令用法详解

    Linux cp命令主要用于复制文件或目录。 语法 cp [options] source dest 或 cp [options] source... directory 参数说明: -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用...

    linux常用命令100

    其中,ls命令用于列出当前目录下的文件和子目录,cd命令用于切换目录,mkdir命令用于创建新目录,rm命令用于删除文件或目录,cp命令用于复制文件或目录,mv命令用于移动文件或目录。另外,pwd命令用于显示当前工作...

    Linux复制文件命令cp之使用解说

    最后百度了一下才明白,原来cp命令复制目录的时候需要带命令参数的。难怪我一使用cp命令就报错。下面说一下该命令的一些使用技巧: 1. cp命令语法 cp [options] &lt;source&gt; &lt;target&gt; 或 cp [options] source1 source2...

    给Linux中的cp和mv命令中添加进度条的高级拷贝

    给Linux中的cp和mv命令中添加进度条的高级拷贝 cp和mv命令是GNU coreutils的一部分。 安装“Advanced Copy”补丁,将进度条添加到Linux的cp和mv命令中

    Linux目录文件基本命令

    创建目录(文件夹)rmdir命令:删除空目录touch命令:创建文件及修改文件时间戳ln命令:在文件之间建立链接ext 文件系统(Linux 文件系统)ln创建链接的深度剖析cp命令:复制文件和目录rm命令:删除文件或目录mv命令...

    Linux基础课件Linux系统文件复制cp命令共9页.p

    Linux基础课件Linux系统文件复制cp命令共9页.pdf.zip

    Linux的基础命令复制,删除,移动文档.docx

    Linux的基础命令,复制,删除移动文档 复制/删除/移动文档 ⑴复制到文档 1. cp—Copy 格式:cp【选项】...原文件...目录路径 2.常用选项 -r:递减复制整个目录 -f:强制覆盖,不提示(与-i相对 -p:保持原文件的...

    Linux 基础 33-拷贝和移动命令-05-cp命令-r选项复制目录.flv

    Linux 基础 33-拷贝和移动命令-05-cp命令-r选项复制目录.flv

    linux命令汇总-linux基础命令

    linux命令汇总.pwd:功能为查看当前所在目录。这是一个非常常用的命令,可以帮助用户确定当前的工作目录。 touch:功能为创建空白文件。语法为touch [选项] [文件]。这个命令可以用来快速创建一个新的空文件。 cat:...

    Linux 基础 31-拷贝和移动命令-03-cp命令复制文件.flv

    Linux 基础 31-拷贝和移动命令-03-cp命令复制文件.flv

    Windows下的Linux中cp复制命令(非bat,是cp的Windows命令实现)

    包含cp.exe及相关依赖项,直接可用。

    常用的Linux命令大全

    grep 在文件中查找某字符 cp 复制文件 touch 创建文件 mv 移动文件 rm 删除文件 rmdir 删除目录 1.1 pwd 命令 该命令的英文解释为 print working directory(打印工作目录)。输入 pwd 命令, Linux 会输出当前目录。 ...

    网络安全学习linux部分命令

    6. cp----复制文件或目录 7. mv----剪切文件、改名 8. rm----删除文件 1.3文件处理命令 1、 touch----创建空文件/刷新文件时间标记 2、 cat---- 显示文件内容 3、 tac----显示文件内容(反向列示...

    Linux常用命令大全.pdf

    cp命令:用于复制文件或目录。可以指定源文件和目标文件的位置,以及是否递归复制目录。 mv命令:用于移动文件或目录,或重命名文件或目录。可以指定源文件和目标文件的位置,实现文件的移动或重命名操作。 rm命令:...

    linux常用命令大全.md

    linux常用命令大全 以下是一些Linux常用的命令及其解析: 1. **ls**:列出目录内容 * 解析:使用`ls`命令可以查看当前... * 解析:使用`cp`命令可以复制文件或目录。例如,`cp source.txt dest.txt`会将`source.tx

    windows下用到的cp命令

    cp,相信用linux的用户对这个命令很熟悉,但windows下却没有这个命令,把它拷贝到windows\system32目录下,就可以通过命令行来调用了。

    linux常用命令大全50个Linux常用命令.pdf

    linux常用命令大全 ...7. cp:用于复制一个文件到指定位置,例如,若要将当前目录中的test.txt文件复制到Documents目录中,可以使用命令cp test.txt Documents。 8. mv:用于将一个文件从一个目录移动到另一

    CP命令实现(linux下C语言)edsionte.com

    linux下C语言实现cp命令。主要功能有: 1.将一个文件拷贝到指定路径。(目的文件可存在也可不存在)。这是my_cp中最基本的功能,事实上2,3,4功能最终都会被分解成此功能。 2.将一个目录拷贝到指定目录下,此时...

Global site tag (gtag.js) - Google Analytics