Linux小黑板(6):软硬链接

"飞吧,去寻觅红色的流星!"

一、软硬链接简介

软链接: 软链接又叫 符号链接 ,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。
软链接
硬链接: 硬链接(hard link,也称链接)就是一个文件的一个或多个文件名。再说白点,所谓 链接 无非是把文件名和计算机文件系统使用的节点号链接起来。因此我们可以用多个文件名与同一个文件进行链接,这些文件名可以在同一目录或不同目录。
硬链接

举个例子,软链接很像我们Windows平台下的快捷方式 任何一个快捷方式都是一串路径

双击快捷方式,就等于去这个路径底下,找到.exe文件运行。

二、Linux下如何建立软硬链接

三、再谈软硬链接

(1)软链接和硬链接的区别

你说了这么多,我还是知道软硬链接有什么区别。它们各自都是干什么用的!

从上面的图,你最直观的感受是什么?

当然是inode! 硬链接的inode 和 链接文件的inode是同样一个。 但是软链接的inode却是独立的!

因此,它们两个的本质区别在于: 是否是新创建了文件! 本质在于,一个inode一个独立的文件!

创建硬链接系统做了什么?

建立硬链接根本没有创建文件! 因为没有独立的inode。因此你这个硬链接的文件属性内容,一定是别人的属性集合和inode集合。

如果此时我们删除原文件呢?

我们此时可以看到,文件的inode的链接数从2变成了1。 那么文件是否还存在?! 答案是是的!

inode内部有一个计数器(引用计数),如何判别一个文件该被真正删除了?当这个硬链接数变为0的时候!

为什么软链接在那里疯狂闪红?

我们先来谈谈软链接具体是什么。

由此,更加应证了我们说的,软链接是一个快捷方式的说法。 那么它是一个文件,那它的数据块存储的是什么呢? 没错! 就是链接文件的 绝对路径!

此时,我们重新创建test.c,惊奇地发现软链接不再"框框"闪红了。

软链接是按照文件名作为自己的内容属性

硬链接则并非独立的文件,而只是指向了已经存在的inode

四、目录与软硬链接

我们随便创建一个目录文件,再看硬链接数,为什么是2呢?

任何一个目录,都有隐藏的硬链接文件"." 、 "..",linux文件系统的访问是树状结构,但是也有指向自己和上级目录的硬链接。我们平常执行的./test = /empty/test。

为什么linux系统不允许用户给目录自定义建立链接?

引入了对目录的硬连接就有可能在目录中引入循环,在目录遍历的时候系统就会陷入无限循环当中,这样导致无法定位到访问目录。Linux的目录结构是一棵以“/目录”为根节点的树,如果允许自定义硬连接,则很有可能会破坏这个结构,甚至形成循环;而一旦形成循环,对于需要遍历目录树的命令,是致命的。所以为了避免对目录树结构的破坏,linux不允许用户自定义硬连接在目录上。

总结

①linux下如何建立软硬链接? ln (-s) file.c file.link

②软链接是独立的文件内容是链接文件的绝对路径,硬链接不是独立的文件,会被inode里的引用计数++,一旦引用计数为0 表示该文件可以被真正删除。

③目录也是有硬链接的,但是linux系统处于自己的考虑,不会让用户给目录建立硬链接

本篇到此结束,

感谢你的阅读

祝你好运~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值