Linux中软链接和硬链接的理解 2
前言
我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data)
与元数据 (metadata)
。
用户数据,即文件数据块 (data block),文件数据块是记录文件真实内容的地方
;
而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息
。
在 Linux 中,inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号.数据中的 inode 号才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块。
软硬链接和inode结点的关系:
为解决文件的共享使用,Linux 系统引入了两种链接:硬链接 (hard link) 与软链接(又称符号链接,即 soft link 或 symbolic link)。
链接为 Linux 系统解决了文件的共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等.
- 若一个 inode 号对应多个文件名,则称这些文件为硬链接。换言之,硬链接就是同一个文件使用了多个别名.
- 软链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块.因此软链接的创建与使用没有类似硬链接的诸多限制.
对软硬链接的总结:
硬链接(hard link) : 可以将它理解为一个 “指向原始文件 inode 的指针”,系统不为它分配独立的 inode 和 文件数据块。所以,硬链接文件与原始文件其实是同一个文件,只是名字不同。我们每添加一个硬链接,该文件的 innode 连接数就会增加 1 ; 而且只有当该文件的 inode 连接数为 0 时,才算彻底被将它删除。因此即便删除原始文件,依然可以通过硬链接文件来访问。需要注意的是,我们不能跨分区对文件进行链接。
软链接(symbolic link) : 等同于 Windows 系统下的快捷方式.在软链接的 block 中,写的不是真正的数据,而仅仅是源文件的文件名及 inode 号.因此能链接目录,也能跨文件系统链接。但是,当删除原始文件后,链接文件也将失效。
参考:
https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/index.html
https://blog.csdn.net/stupid56862/article/details/90785420
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)