CentOS里ln命令详解

分类:CentOS教程 阅读:4661 次

ln

名称:ln - make links between files在文件之间创建连接

功能简述:linxu系统中,有所谓的链接。链接有两种之分:

=============================================================================

硬链接与软链接两者的区别:

对于一个文件来说,有唯一的索引接点(inode)与之对应。

软链接:也称符号链接,就是产生一个新文件,文件内容实际只记录它自己要连接的文件的路径在何处。软链接只是一个记录文件路径的文件。所以如果源文件被删除,软链接文件还是存在的。

硬链接:硬链接为文件开设一个新的目录项,硬链接与文件原有的名字是平权的,在Linux看来它们是等价的。都是指向相同的物理地址。通俗的讲,比如一个东西放在柜子里,然后原本是一个人认领,后面创建了一个硬链接,就相当于实际上又多了一个人认领。那么要清空这个柜子就必须得两个人同时都同意才行。而软连接就相当于贴了标签而已,清空柜子不用标签同意。然后目录不能够创建硬链接?创建硬链接时,由于删除文件要在同一索引点属于唯一链接上才能成功,所以硬链接可以保证文件的误删除。也就是说只有物理路径上的所有硬链接(包含源文件)都被删除完成,文件数据块和目录的连接才会被释放。硬链接只能在同一个文件系统上创建不能夸文件系统。

=============================================================================

参数:

-b 删除、覆盖以前建立的连接

-f 链结时先将与 dist 同档名的档案删除
-d 允许系统管理者硬链结自己的目录

-i 交互模式,文件存在则提示用户是否覆盖

-n 把符号链接视为一般目录

-s 软链接(符号链接)

-v 显示详细的处理过程

实例:

1)创建软硬链接后的链接数问题


可以发现创建软链接,源文件的链接数不增加,因为软链接是一个独立的文件。而创建硬链接,源文件和链接文件的链接数都会增加,因为两者都是指向同一个inode。链接数其实也就是现实一个inode的链接数,软链接是一个新文件新inode所以初始就只是1而已。创建的目录初始及有


2)创建软硬链接后,删除源文件,重建源文件

[root@bogon ~]# ll

-rw-r--r-- 2 root root 17 Apr 26 00:40 1.log

-rw-r--r-- 2 root root 17 Apr 26 00:40 log

lrwxrwxrwx 1 root root 5 Apr 26 00:20 log1 -> 1.log

[root@bogon~]# rm 1.log

rm: remove regular file `1.log'? y

[root@bogon ~]# ll

-rw-r--r-- 1 root root 17 Apr 26 00:40 log

lrwxrwxrwx 1 root root 5 Apr 26 00:20 log1 -> 1.log

[root@bogon ~]# echo "this new file">1.log

[root@bogon ~]# ll

-rw-r--r-- 1 root root 14 Apr 26 00:41 1.log

-rw-r--r-- 1 root root 17 Apr 26 00:40 log

lrwxrwxrwx 1 root root 5 Apr 26 00:20 log1 -> 1.log

[root@bogon~]# cat log1

this new file

[root@bogon ~]# cat log

this is old file

说明:

1.源文件被删除后,并没有影响硬链接文件;软链接文件在centos系统下不断的闪烁,提示源文件已经不存在

2.重建源文件后,软链接不在闪烁提示,说明已经链接成功,找到了链接文件系统;重建后,硬链接文件并没有受到源文件影响,硬链接文件的内容还是保留了删除前源文件的内容,说明硬链接已经失效

创建完成的软连的权限变成:lrwxrwxrwx,那么具体的权限判断是哪个[U2]?

[test@bogontmp]$ cat 1.log

cat: 1.log: Permission denied


3)创建连接文件

ln -s 源文件 目标文件 软链接

ln 源文件 目标文件 硬链接


《目录的链接数》

目录初始的链接数就为2,当在底下新建一个子文件夹,连接数就又新增1.

《软连接的权限问题》

软链接只是一个路径记录而已,所以实际的权限应该还是源文件的权限,毕竟源文件的inode才是记录文件读取权限的地方。经试验,得验证。


----------------------------后续自我小结----------------------------------------

ln创建连接也是比较常用的,主要就是创建软硬连接。应该是属于基础命令,功能也相对没有那么复杂。