硬链接与软连接:

磁盘文件简单的一个框架图:
在这里插入图片描述

磁盘里的文件系统如何管理:

将磁盘划分成几个区域,前面是磁盘信息,

第一个区域:放的是超级块
第二个区域:是inode 在磁盘上每创建一个文件,就会对应一个inode的结构体
第三个区域:目录项
目录项分为项:
第一项是inode的编号
第二项是文件的名称 当我们在linux中创建一个文件(touch hello.c)时,在文件内写入数据“hello world”(字符串),此时就会在linux中创建一个数据区,会把文件中的数据保存到这个数据区,此时这个数据区文件会对应一个inode的结构体,这两个是一 一对应的关系,也就是数据区有几个文件,它就对应几个inode的结构体。

inode里面会有一个编号,当你在创建的时候,这个编号会对应一个文件名
比如:
目录项里面就会有编号是1001对应hello.c

当我们用vim打开一个文件时(vim hello.c),vim怎么知道这个文件在哪?

它的执行过程是:
将文件名hello.c传给vim这个编辑器,此时这个编辑器会通过文件名hello.c去目录项里面找到1001这个inode编号,进而通过这个编号就可以找到inode结构体,找到结构体后,结构体里面就会有数据区里面文件的信息,找到数据区,打开这个文件,就可以加载文件中的内容。

第四个区域:文件的数据区域

所谓硬链接

就是以inode的物理编号为基础创建的一个链接 比如: ln hello.c
xx.c,那么这个xx.c就是hello.c的一个硬链接,同时,在目录项里面就有一个文件名为xx.c,xx.c和hello.c是同一个文件,说直接点硬链接就是一个文件的别名,对应的还是这个hello.c这个文件,它是利用hello.c这个编号,来建立的一个链接,所以这两个名称都是对应的同一个inode结构体,对应同一个inode,就说明它们对应的是同一个文件,所以不管我们是vim
hello.c还是vim
xx.c,都是打开的同一个文件,都是通过inode编号1001找到数据区里的文件。就像我们经常看到的硬链接数,在目录项中就有几个文件名指向这个文件

实操:
在这里插入图片描述

硬链接总结:

就是文件的一个别名,相当于给文件多取一个名字,所以呢,文件本身的文件名,也是这个文件的硬链接。

从删除(rm)角度看:

本质上也就是删除该数据区文件的硬链接数,当一个文件的硬连接数为零的时候,我们就认为该文件不存在,系统就会把这个数据区清除。

软连接:

软连接属于七种类型文件里面的一种符号链接(特殊文件:快捷方式),
七种类型文件分别为:

常规文件             -
        ASCII码文件
        二进制的文件 
目录字符设备         c
块设备               b
有名管道             p
套接口               s
符号链接             l
目录文件             d

软连接是根据文件的路径来建立链接
比如:创建一个软连接ln -s hello.c yy.c,此时此刻yy.c是一个独立的一个文件,数据区内会有一个单独的数据区,既然有单独的数据区,那么它就对应一个单独的inode结构体,编号也是有单独的一个inode编号,目录项里面也会有对应的项。

那么软连接文件里面放的是什么?

放的是建立链接的这个文件的一个路径

执行流程:

打开文件vim yy.c,此时他会根据这个文件名先在目录项里面找到inode编号,然后通过inode编号找到inode这个节点后,进而就可以找到对应的数据区,从数据区文件里面获取源文件的路径,通过路径再找到文hello.c,后面的流程就和硬链接一样了,最后通过yy.c打开hello.c

从删除(rm)角度看:

如果删除软连接yy.c,会不会影响源文件hello.c,不会影响源文件。
所以一般我们为了安全起见都会给一些动态库建立一个软链接,目的是为了对动态库进行保护,用的时候是使用的链接文件,而不是用的库的本身

如有什么出入还望指出,虚心求教!
如果你有收获,点个赞,鼓励一下,谢谢^ _ ^

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值