硬链接和软链接和inode

Linux链接概念

Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为软链接,即符号链接(Symbolic Link)默认情况下,ln命令产生硬链接。

【硬连接】:硬连接指通过索引节点号来进行连接。inode是可以对应多个文件名的

在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。

在Linux中,多个文件名可以指向同一索引节点。一般这种连接就是硬连接

硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。

只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

【软连接】:另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息

实战-1: ln命令创建硬链接

语法格式:ln 源文件 目标文件

image.png

硬链接的原理就是多个文件名指向同一个inode,因此多个文件名共用一个inode号,达到共享与备份的目的

注意:源文件被删除,不影响链接文件的正常使用

image.png

硬链接不能针对目录创建

image.png

硬链接不能跨分区进行创建

image.png

硬链接的特点: 无法针对目录,跨分区无法实现。因为每个分区都有自己独立的INDOE编号

互动:为什么刚创建的一个目录,链接数就是2?

[root@xuegod63 ~]# mkdir test

[root@xuegod63 ~]# ll -d test/

drwxr-xr-x 2 root root 6 5月  16 15:55 test/

默认新一个空目录,此目录的第二字段就是2(包含两个隐藏目录,因为每一个目录都有一个指向它本身的子目录"." 和指向它上级目录的子目录".."),所以test是一个链接, 隐藏目录. 是第二个链接

[root@xuegod63 ~]# ll -id test/    #两个inode号是一样的

2453723 drwxr-xr-x 2 root root 6 5月  16 15:55 test/

[root@xuegod63 ~]# ll -id test/.

2453723 drwxr-xr-x 2 root root 6 5月  16 15:55 test/.

ln -s 创建软连接

软链接:相当于windows中的快捷方式

语法:ln  -s  源文件  软链接的名字

例:

[root@xuegod63 ~]# cp /etc/passwd a.txt

[root@xuegod63 ~]# ln -s a.txt a-link.txt

[root@xuegod63 ~]# ll a-link.txt

lrwxrwxrwx 1 root root 5 5月  16 16:10 a-link.txt -> a.txt

[root@xuegod63 ~]# rm -rf a.txt

[root@xuegod63 ~]# ll a-link.txt

lrwxrwxrwx 1 root root 5 5月  16 16:10 a-link.txt -> a.txt

image.png

注:源文件被删除,链接文件失效


例2:能针对目录和跨分区创建软链接

[root@xuegod63 ~]# ln -s /boot/grub grub-link

image.png

能跨分区创建(源文件必须写绝对路径

[root@xuegod63 ~]# cd /boot/

[root@xuegod63 boot]# ln -s ./grub /root/aaa

[root@xuegod63 boot]# ll /root/aaa

lrwxrwxrwx 1 root root 6 5月  16 16:21 /root/aaa -> ./grub  #报错了

inode的特殊作用

由于inode号码与文件名分离,这种机制导致了一些Unix/Linux系统特有的现象。

  1. 有时,文件名包含特殊字符,无法正常删除。这时,直接删除inode节点,就能起到删除文件的作用。

  2. 移动文件或重命名文件,只是改变文件名,不影响inode号码。

  3. 打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名。因此,通常来说,系统无法从inode号码得知文件名。

互动:为什么每次修改完服务器配置文件后,都需要重新加载一下配置文件?

因为vim每次修改完后,Inode号都会变。

[root@xuegod63 ~]# cp /etc/passwd passwd

[root@localhost ~]# ls -i passwd

393418 passwd

[root@localhost ~]# vim passwd     #添加一些内容

[root@localhost ~]# ll -i passwd

440252 -rw-r--r-- 1 root root 1813 Dec 29 12:04 passwd

这就是为什么每次修改完服务器的配置文件,都要重启服务,重新读一下配置文件。

版权声明:
作者:WaterBear
链接:https://l-t.top/1435.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>