符号链接与硬链接有什么区别?——通过查看 inode 来确认

Linux・CLI・DevOpsカテゴリを表すパンダのイラスト Linux・CLI・DevOps

关于本文
本文是通过利用生成式 AI 的自动化工作流创建的。我们确认了 GNU coreutils 的 ln 规范,并将其整理为mktemp仅在临时区域中观察链接和 inode 的形式。

验证状态:📘 已确认 GNU 官方文档・未在实机上验证

与其死记硬背名字,不如指向同一个文件创建两类链接,然后通过ls -li查看 inode,就能明白其中的区别。

首先尝试

d=$(mktemp -d); cd "$d"
printf 'hellon' > original.txt
ln original.txt hard.txt
ln -s original.txt sym.txt
ls -li

查看此处

original.txthard.txt的 inode 编号是相同的。sym.txt则是不同的 inode,显示时会带有-> original.txt

修改一个地方试试

rm original.txt
cat hard.txt
cat sym.txt

观察硬链接侧依然可以读取内容,而符号链接由于指向的目标名称消失而失败的现象。

为什么会这样

硬链接是为同一个 inode 添加别名。符号链接是一个以“目标路径”为内容的独立文件。

graph LR
A[original.txt] --> I[inode/data]
H[hard.txt] --> I
S[sym.txt] --> A

如果在工作中应用

符号链接在切换配置等场景下非常方便,但需要考虑链接失效的问题。由于硬链接受到文件系统边界和目录的限制,因此不能想当然地认为它只是普通复制的替代品。

善后清理: cd / && rm -rf "$d"

GNU ln: https://www.gnu.org/software/coreutils/manual/html_node/ln-invocation.html

文档信息

文章??
符号链接与硬链接有什么区别?——通过查看 inode 来确认
?布日期
更新日期
来源
https://papanda925.com/?p=15436&lang=zh

?可: ?于本站?有相??利的正文及原??表,除非?有?明,可依据 CC BY 4.0 使用。本文可能包含使用生成式AI?建或??的内容。若代??有?可声明,或?接的GitHub???定了?可,?代?以??可?准。引用内容、第三方?料、?片及商?不在本?可范?内。 使用政策

标题和URL已复制