Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐: 强烈推荐:Ylmf OS 3.0 正式版发布附迅雷高 XP系统下硬盘安装Fedora 14图文教程
搜索:
您的位置: Linux安全网 > Linux入门 > » 正文

cp命令的细节

来源: 未知 分享至:

               关于CP命令的用法细节

今天在写一个脚本时,要复制一个目录到另一个目录下时,怎么执行都不成功,后来一看原来忘记加参数啦,有时成功往往在于细节,希望大家以后一起注意吧,来让我们一起看看cp命令的用法吧

*cp(复制文件或目录)

cp [options]  source     destination/directory

参数:

-a:相当于-pdr的意思(常用)

---------------------------------------------------------                     -d:If source has link file attribute,so copy link file attribute

,not itself

-----------------------------------------------------                           -f:force(强制),若目标文件已existence,and can't open,则删除后再尝试一次

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

------------------------------------------------------------                 -l :进行硬链接(hard link)的连接文件创建,而非复制文件本身

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

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

----------------------------------------------------------

-s:复制成为符号连接文件(symbolic link)即“快捷方式”文件

----------------------------------------------------------

-u:若destination比source旧才更新

---------------------------------------------------------------

**:注意若源文件有两个以上,则最后一个目标文件一定是“目录”才行!!!

-------------------------------------------------------------

下面我们看下实例吧:

1:

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

解析:以root身份将主文件下的.bashrc 复制到/tmp目录下并且重命名为bashrc。

**也就是说cp命令还具有重命名的功能。

-------------------------------------------------------------

2:

[root@server53 tmp]# cp -i ~/.bashrc /tmp/bashrc
cp: overwrite `/tmp/bashrc'?  <= =询问是否覆盖

解析:加上-i,它是当目标文件已存在,询问用户是否确定覆盖,确定按下y,否则n。

-------------------------------------------------------------------               3:

将目录切换到/tmp下,并将/var/log/wtmp复制到/tmp且查看属性:

[root@server53 ~]# cd /tmp
[root@server53 tmp]# cp /var/log/wtmp .  # <="."代表当前目录
[root@server53 tmp]# ll /var/log/wtmp wtmp
-rw-rw-r-- 1 root utmp 342144 Jul 31 12:43 /var/log/wtmp
-rw-r--r-- 1 root root 342144 Jul 31 13:58 wtmp

解析:注意看两个文件的权限,属性,文件的创建时间都改变了。

**在不加任何参数的情况下,文件的某些属性/权限会改变,目标文件的所有者通常是命令操作者本身。

由于具有这个特性,因此当我们进行备份时,某些时候要特别注意特别权限文件,如密码文件(/etc/shadow)以及一些配置文件,就不能直接以cp来复制,而是加上-a 或者-p等可以完整复制文件权限,参数。

看如下:

[root@server53 tmp]# cp -a /var/log/wtmp wtmp_2
[root@server53 tmp]# ll /var/log/wtmp wtmp_2
-rw-rw-r-- 1 root utmp 342144 Jul 31 12:43 /var/log/wtmp
-rw-rw-r-- 1 root utmp 342144 Jul 31 12:43 wtmp_2

-----------------------------------------------------------------

4:复制/etc/这个目录下的所有内容到/tmp下面

[root@server53 tmp]# cp /etc/ /tmp
cp: omitting directory `/etc/'     <==
如果是目录则不能够直接复制,要加上-r的参数。

**:-r可以复制目录,但文件的权限可能会被改变,也可以用 “cp -r /etc/  /tmp”来执行,尤其是在备份时

-------------------------------------------------------------------------------

5:将1题中的bashrc创建一个连接文件

[root@server53 tmp]# ll bashrc
-rw-r--r-- 3 root root 176 Jul 31 13:53 bashrc
[root@server53 tmp]# cp -s bashrc bashrc_slink
[root@server53 tmp]# cp -l bashrc bashrc_hlink
[root@server53 tmp]# ll bashrc*
-rw-r--r-- 4 root root 176 Jul 31 13:53 bashrc
-rw-r--r-- 4 root root 176 Jul 31 13:53 bashrc_hlink
lrwxrwxrwx 1 root root   6 Jul 31 14:18 bashrc_slink -> bashrc

解析:加上-l 表示硬链接,其文件属性,权限与源文件完全相同;;加上-s 表示符号连接,其后又->,其属性权限都有所改变。

-------------------------------------------------------------                      6:将bashrc_slink复制成为bashrc_slink_1与bashrc_slink_2

[root@server53 tmp]# cp -s bashrc bashrc_slink
[root@server53 tmp]# cp bashrc_slink bashrc-slink_1
[root@server53 tmp]# cp -d bashrc_slink bashrc-slink_2
[root@server53 tmp]# ll bashrc bashrc_slink bashrc-slink*
-rw-r--r-- 4 root root 176 Jul 31 13:53 bashrc
lrwxrwxrwx 1 root root   6 Jul 31 14:31 bashrc_slink -> bashrc
-rw-r--r-- 1 root root 176 Jul 31 14:32 bashrc-slink_1
lrwxrwxrwx 1 root root   6 Jul 31 14:32 bashrc-slink_2 -> bashrc
解析:发现没?这个例子很有趣,原本复制的是连接文件,但是却将连接文件的实际文件复制过来了

也就是说不加任何参数cp复制的是源文件,而非连接文件的属性;

若要复制连接文件的属性,就要加上-d参数。

---------------------------------------------------------

用cp命令时注意:::

First:   是否要完整保留源文件的信息

Second:源文件是否是为软连接文件

Thirst: 源文件是否为目录

 

参考书系:鸟哥的私房菜

希望大家好好分享!!!

 

 


Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史