首页 > 代码库 > 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命令