【链接文件】

在 Linux 下面的链接文件有两种,一种是符号链接(Symbolic Link),类似 Windows 的捷径功能的文件,可以让你快速的 链接到目标文件(或目录); 另一种是实体链接(hard link),通过文件系统的 inode 链接来产生新文件名,而不是产生新文件!

文件结构

一个文件包括他的实际内容(数据)和属性,文件数据会放在block块中,属性会放在inode中,inode中会记录真正内容的指向,即该文件的block块。

hard link,实体链接

什么是hard link

每个文件都有一个inode,inode中会记录该文件具体内容所处的block标号,每个文件属于它所在目录的具体内容,

目录的block中会指出该目录中的文件的inode编号。

实体链接就是将多个文件名对应到同一inode,所以hard link 只是在某个目录下新增一个文件名文件名的inode编号于源文件inode编号相同。

在文件属性中第二栏的代表有多少文件名链接连接到此inode,在创建实体链接后,会改变此处内容。

hard link的限制:

(1)不能跨文件系统,因为每个文件系统有自己的inode和block

(2)不能link目录

符号链接

什么是符号链接

符号链接会创建一个独立的文件,而这个文件会让数据的读取指向他 link 的那个文件的文件名!当来源文件被删除之后,symbolic link 的文件会“开不了”, 会 一直说“无法打开某文件!”。实际上是因为找不到原始“文件名”。符号链接产生的链接文件和源文件的inode编号不同且有各自对应的data block,而且链接文件data block中的内容为源文件的文件名。

通过链接文件打开源文件的过程:

首先通过链接文件的inode找到链接文件的block,并读取其中的文件名,根据文件名找到源文件所对应的目录,在该目录的block中找到源文件的inode编号,接着找到源文件的block,并读取内容。

制作链接文件使用ln。

目录的link数量

创建实体链接会改变文件属性中第二栏的内容,但是不能为目录创建实体链接,那么目录第二栏为多少呢,又会怎么变化呢?

首先创建一个新目录时,会有三个东西出现,例如创建一个新目录名称为 /tmp/testing 时,基本上会有三个东西,那就是:

(1)/tmp/testing

(2)/tmp/testing/.

(3)/tmp/testing/.. 

第二个代表该目录,第三个代表上级目录。

所以创建一个新目录后,新目录的link数为2,上级目录的link数会增加1。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值