Linux 软硬链接:ln、inode 与区别一次讲清

举报
yd_283162409 发表于 2026/11/08 09:02:30 2026/11/08
【摘要】 什么是链接在 Linux 里,一个文件可以有多个名字。链接就是给同一个文件起别名,有两种:硬链接和软链接。理解它们的区别,关键在 inode。inode 是什么每个文件在磁盘上都对应一个 inode,里面存着文件元数据:权限、属主、时间戳、数据块位置等。文件名只是目录里的一条记录,指向某个 inode。删除文件时,删的是这条记录;只有当指向该 inode 的记录数为 0,数据才真正释放。硬链...

什么是链接

在 Linux 里,一个文件可以有多个名字。链接就是给同一个文件起别名,有两种:硬链接和软链接。理解它们的区别,关键在 inode。

inode 是什么

每个文件在磁盘上都对应一个 inode,里面存着文件元数据:权限、属主、时间戳、数据块位置等。文件名只是目录里的一条记录,指向某个 inode。删除文件时,删的是这条记录;只有当指向该 inode 的记录数为 0,数据才真正释放。

硬链接:同一个 inode,多个名字

用 ln 源文件 硬链接名 创建硬链接。两个名字指向同一个 inode,改其中一个,另一个立刻同步,因为它们根本就是同一个文件。删除其中一个名字,数据还在,inode 引用计数减一,直到计数归零才释放空间。

硬链接有两个限制:不能跨文件系统(inode 只在同一文件系统内有效),也不能链接目录(防止目录环)。用 ls -i 可以看到硬链接的两个名字 inode 号完全相同。

软链接:一条指向路径的捷径

用 ln -s 目标 软链接名 创建软链接。它是一个独立的新文件,内容是目标的路径字符串,有自己的 inode。访问软链接时,系统按路径找到目标文件。目标被删,软链接就悬空,变成“断链”,用 ls -l 能看到它标红。

软链接可以跨文件系统,也可以指向目录。常见的 /bin/sh 指向 dash、/usr/bin/python3 指向具体版本,都是软链接。

怎么选

需要“两个名字、一个文件、删一个另一个还在”时用硬链接,比如给重要文件做个同目录备份名。需要跨分区、指向目录、或者做版本切换的快捷方式时用软链接。分不清就看需求:怕目标被删断链就用硬链接,需要灵活就用软链接。

常用命令

创建硬链接:ln file.txt file-hard.txt;创建软链接:ln -s /usr/local/bin/app ~/bin/app;查看链接关系:ls -li 看 inode 号,readlink 链接名 看软链接指向;删除链接只删名字本身:rm 链接名,不会删目标数据(硬链接删的是一个名字,软链接删的是捷径文件)。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。