从心开始的CentOS学习笔记之七:文件目录操作cp rm

cp [options] source1 source2 source3 .... directory

选项与参数:

-a :相当于 -dr --preserve=all 的意思,(常用)

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

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

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

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

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

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

-s :复制成为符号链接文件 (symbolic link),亦即“捷径”文件;

-u :destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制。

--preserve=all :除了 -p 的权限相关参数外,还加入 SELinux 的属性, links, xattr 等属性也复制。

注意:如果来源文件有两个以上,则最后一个目的文件一定要是“目录”才行。

复制(cp)这个指令是非常重要的,不同身份者执行这个指令会有不同的结果产生,尤其是那个-a, -p的选项, 对于不同身份来说,差异则非常的大,这主要原因是只有root用户有修改权限文件和目录的拥有者等权限,当于一些普通用户-a -p 参数可能不会有作用。


1、测试一:下面的测试首先以fromheart用户登录系统,在其家目录下建立一个文件test,然后切换到root用户,不带参数 带参数-p 查看复制后文件与源文件的属性差别

touch test

su -

pwd

cp /home/fromheart/test .

cp /home/fromheart/test testp

ls -al /home/fromheart/test test testp

通过下图可以发现,当带参数-p时,系统会保持文件原来的相关属性(所有者,相关用户或组的权限)


从心开始的CentOS学习笔记之七:文件目录操作cp rm

一般来说,我们如果去复制别人的数据 (当然,该文件用户必须要有 read 的权限才行)时, 总是希望复制到的数据最后是我们自己的,所以,在默认的条件中, cp 的来源文件与目标文件的权限是不同的,目标文件的拥有者通常会是指令操作者本身。


2、测试二:下面的测试,首先在当前登录用户fromheart家目录下分别建立 1/2、3目录,然后通过 cp -r 命令将1目录(含目录下的子目录2)复制到3目录下:

mkdir -p 1/2

mkdir 3

cp 1 3 (提示错误)

cp -r 1 3

ls -alR 1 3

从心开始的CentOS学习笔记之七:文件目录操作cp rm

注意: -r 是可以复制目录,但是,文件与目录的权限可能会被改变。 这一点在备份时要尤其注意,因为备份时用户很大可能需要保持源文件的属性。上图中,由于操作用户都是在其家目录下进行,所以权限没有变化。


测试三:建立链接文件 (symbolic link)

使用 -l 及 -s 都会创建所谓的链接文件(link file),但是这两种链接文件却有不一样的情况,其中个 -l 就是所谓的硬链接(hard link),至于 -s 则是软链接(symbolic link),相当于windows 下的快捷方式。

 简单来说,软链接是一个“捷径”,这个捷径会链接到源文件上去!所以用户会看到文件名右侧会有个指向(->)的符号。

硬链接目标文件和源文件属性与权限完全一模一样,与尚未进行链接前的差异则是其属性第二栏的link数由1变成2了。同时,当源文件内容发生变化,硬链接目标文件也会发生变化。


mkdir sl ll(建立两个目录,sl 存放软链接源文件sl.txt,ll存放硬链接源文件ll.txt)

touch sl/sl.txt ll/ll.txt (在上述两个文件分别建立两个空文件sl.txt ll.txt)

cp -s sl/sl.txt sl.txts (通过cp -s命令,产生软链接文件sl.txts)

cp -l ll/ll.txt ll.txtl(通过cp -l命令,产生硬链接文件ll.txtl)

ls -ali ll/ll.txt ll.txtl (查看硬链接源文件、目标文件的inode等详细信息,发现两个文件的inode相同,文件连接数变成了2,注意对于存在于不同目录下的硬链接源目标文件,用户可以通过 find / -inode命令查找

ls -ali sl/sl.txt sl.txts(软链接源目标文件完全相同)


从心开始的CentOS学习笔记之七:文件目录操作cp rm


测试三:当源文件比目标文件新时才复制过来

格式 :cp -u 源文件名 目标文件名(常用于备份操作


测试四:复制链接文件的实际文件(不是链接文件,即不是快捷方式)

格式: cp -d  源文件名 目标文件名

所示。


范例五:一次将多个文件复制到目录下

格式:cp [options] source1 source2 source3 .... directory

可以将多个数据一次复制到同一个目录去!最后面一定是目录!


郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。