首页 > 代码库 > 51study之cp命令

51study之cp命令

51study:cp

cp即是英文的copy缩写,主要用来复制文件或目录

cp (复制文件或目录)

[root@mjboy ~]# cp [-adfilprsu] 源文件(source) 目标文件(destination)

[root@mjboy ~]# cp [options] source1 source2 source3 .... directory

选项不参数:

    -a :相当于 -pdr的意思,至于pdr 请参考下列说明;(常用)

    -d :若源文件为链接文件的属性(link file),则复制链接文件属性而非文件本身;

    -f :为强制(force)的意思 ,若目标文件已经存在且无法开启,则移除后再尝试一 次;

    -i :若目标文件(destination)已经存在时,在覆盖时会先询问操作的进行(常用)

    -l :进行硬式连结(hard link)的连结文件建立,而非复制文件本身;

    -p :连同文件的属性一起复制过去,而非使用默认属性(备份常用);

    -r :递归持续复制,用于目录的复制行为;(常用)

    -s :复制成为符号链接文件 (symbolic link),即『快捷方式』文件;

    -u :若 destination 比 source 旧才更新 destination !

最后需要注意的,如果源文件有两个以上,则最后一个目的文件一定要是『目录』才行!


范例一:用 root 身份,将家目录 .bashrc 复制到 /tmp 下,并更名为 bashrc


[root@mjboy ~]# cp ~/.bashrc /tmp/bashrc

[root@mjboy ~]# cp -i ~/.bashrc /tmp/bashrc

cp: overwrite `/tmp/bashrc‘? n <==n 不覆盖,y 为覆盖

# 重复作两次操作,由于/tmp 底下已经存在 bashrc 了,加上 -i 选项后,

 则在覆盖前会询问使用者是否确定,可以按下 n 或者 y 来二次确认呢!


范例二:不加参数直接cp,使用默认属性


[root@mjboy tmp]# ll /var/log |grep wtmp

-rw-rw-r--. 1 root  utmp  105984 5月   3 17:18 wtmp

[root@mjboy tmp]# cp /var/log/wtmp .

[root@mjboy tmp]# ll

总用量 112

-rw-r--r--. 1 root root    176 5月   3 17:23 bashrc

-rw-r--r--. 1 root root 105984 5月   3 17:38 wtmp


范例三:cp -a,文件的原有属性一同复制过来(完整复制)


[root@mjboy tmp]# cp -a /var/log/wtmp wtmp2

[root@mjboy tmp]# ls -l /var/log/wtmp wtmp2

-rw-rw-r--. 1 root utmp 105984 5月   3 17:18 /var/log/wtmp

-rw-rw-r--. 1 root utmp 105984 5月   3 17:18 wtmp2

在默认条件下,cp的源文件与目的文件的权限是不同的,目的文件的所有者通常会是命令操作者本身。由于这个特性,为了进行完整的复制文件,可以使用cp -a或者cp -p进行完整权限文件的复制。


范例四:cp -r


[root@mjboy tmp]# cp /etc/ /tmp/

cp: 略过目录"/etc/"

[root@mjboy tmp]# cp -r /etc/ /tmp/

[root@mjboy tmp]# ll

总用量 4

drwxr-xr-x. 60 root root 4096 5月   3 17:59 etc

注意:cp -r虽然能够将文件和目录复制过来,但是可能复制的文件与目录权限会发生变化,为防止此类情况产生,可以使用cp -a命令执行。


范例五:cp -s(symbolic link,软连接,快捷方式),cp -l(hard link,硬连接)


[root@mjboy tmp]# cp -s bashrc bashrc_slink

[root@mjboy tmp]# ll

总用量 4

-rw-r--r--. 1 root root 176 5月   3 18:09 bashrc

lrwxrwxrwx. 1 root root   6 5月   3 18:09 bashrc_slink -> bashrc

[root@mjboy tmp]#

[root@mjboy tmp]# cp -l bashrc bashrc_hlink

[root@mjboy tmp]# ls -l bashrc*

-rw-r--r--. 2 root root 176 5月   3 18:09 bashrc

-rw-r--r--. 2 root root 176 5月   3 18:09 bashrc_hlink

lrwxrwxrwx. 1 root root   6 5月   3 18:09 bashrc_slink -> bashrc

[root@mjboy tmp]#

注意:cp -r虽然能够将文件和目录复制过来,但是可能复制的文件与目录权限会发生变化,为防止此类情况产生,可以使用cp -a命令执行。

范例六:cp -u,cp -d


cp -u,目标文件与源文件存在差异时则会复制,经常用于备份中。

[root@mjboy tmp]# cp -u ~/.bashrc /tmp/bashrc (.bashrc>/tmp/bashrc (新旧程度)

[root@mjboy tmp]# ll

总用量 4

-rw-r--r--. 1 root root 176 5月   3 18:18 bashrc

cp -d(若源文件为连接文件的属性,则复制连接文件属性而非文件本身

[root@mjboy tmp]# cp -d bashrc_slink_1  bashrc_slink_2

[root@mjboy tmp]# ls -l

总用量 4

-rw-r--r--. 1 root root 176 5月   3 22:50 bashrc

lrwxrwxrwx. 1 root root   6 5月   3 22:51 bashrc_slink_1 -> bashrc

lrwxrwxrwx. 1 root root   6 5月   3 22:52 bashrc_slink_2 -> bashrc

[root@mjboy tmp]#

[root@mjboy tmp]# cp  bashrc_slink_1  bashrc_slink_3

[root@mjboy tmp]# ll

总用量 8

-rw-r--r--. 1 root root 176 5月   3 22:50 bashrc

lrwxrwxrwx. 1 root root   6 5月   3 22:51 bashrc_slink_1 -> bashrc

lrwxrwxrwx. 1 root root   6 5月   3 22:52 bashrc_slink_2 -> bashrc

-rw-r--r--. 1 root root 176 5月   3 22:55 bashrc_slink_3

注意:cp -r虽然能够将文件和目录复制过来,但是可能复制的文件与目录权限会发生变化,为防止此类情况产生,可以使用cp -a命令执行。


范例七:cp  文件1 文件2 文件n  /目录 (cp一次拷贝多个文件,最后面写的一定是目录)


[root@mjboy tmp]# cp ~/.bashrc ~/.bash_history /tmp

[root@mjboy tmp]# ls -al

总用量 36

drwxrwxrwt.  2 root root  4096 5月   3 23:03 .

dr-xr-xr-x. 25 root root  4096 5月   3 14:36 ..

-rw-------.  1 root root 20245 5月   3 23:03 .bash_history

-rw-r--r--.  1 root root   176 5月   3 23:03 .bashrc


本文出自 “mjboy的技术博客” 博客,请务必保留此出处http://moonwalk.blog.51cto.com/9262087/1950625

51study之cp命令