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

posted @   青松城  阅读(67)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示