目录
二、软链接 Soft Link / Symbolic Link:系统快捷方式
很多刚接触 Linux 的同学都会被硬链接、软链接绕晕,其实它们本质就是文件系统的两种 “引用方式”,一个像文件分身,一个像快捷方式。
这篇文章用最通俗的语言 + 可直接运行的命令,把软硬链接讲透。
先搞懂核心前提:inode 是什么
Linux 里,文件真正的身份不是文件名,而是 inode(索引节点)。
- inode 存文件大小、权限、磁盘位置等元数据
- 文件名只是目录里的一个 “标签”,指向 inode
- 用
ls -i可以查看文件 inode 号
一句话:文件名 → inode → 真实数据块
一、硬链接 Hard Link:同一个文件的多个名字
通俗理解
给文件起别名,多个名字指向同一个 inode、同一份数据,类似于指针。就像一间房子有多个门牌号,开任何一扇门进的都是同一间屋。
核心特性
- 与原文件共享同一个 inode
- 不占用额外磁盘空间(只多一个目录项)
- 不能跨分区 / 文件系统
- 不能给目录创建硬链接
- 删除原文件,硬链接依然可用,直到所有链接都删除,数据才真正释放
创建命令
# 语法
ln 原文件 硬链接名
lzy@VM-8-7-ubuntu:~/test/test$ touch test.txt
lzy@VM-8-7-ubuntu:~/test/test$ ln test.txt hard-link
lzy@VM-8-7-ubuntu:~/test/test$ ls -li
total 0
1055060 -rw-rw-r-- 2 lzy lzy 0 Apr 13 18:50 hard-link
1055060 -rw-rw-r-- 2 lzy lzy 0 Apr 13 18:50 test.txt
lzy@VM-8-7-ubuntu:~/test/test$

二、软链接 Soft Link / Symbolic Link:系统快捷方式
通俗理解
Windows 桌面快捷方式,是一个独立小文件,里面只存目标路径。相当于一张纸条,写着 “去 xxx 找文件”。
核心特性
- 有独立 inode,本身是特殊文件
- 可以跨文件系统、跨分区
- 可以链接目录
- 原文件删除 / 移动后,软链接变 “死链”,打不开
- 大小固定,只存路径字符串长度
创建命令
# 语法
ln -s 原文件/目录 软链接名
# 示例
lzy@VM-8-7-ubuntu:~/test/test$ touch test.txt
lzy@VM-8-7-ubuntu:~/test/test$ ln -s test.txt soft-link
lzy@VM-8-7-ubuntu:~/test/test$ ls -li
total 0
1055063 lrwxrwxrwx 1 lzy lzy 8 Apr 13 18:54 soft-link -> test.txt
1055062 -rw-rw-r-- 1 lzy lzy 0 Apr 13 18:54 test.txt

三、软硬链接的区别
| 对比项 | 硬链接 Hard Link | 软链接 Symbolic Link |
|---|---|---|
| 本质 | 文件别名,共享 inode | 独立文件,存目标路径 |
| inode | 与原文件相同 | 独立新 inode |
| 能否跨分区 | 不能 | 能 |
| 能否链接目录 | 不能 | 能 |
| 原文件删除 | 链接可用,数据不丢 | 变成死链,无法访问 |
| 占用空间 | 几乎为 0 | 仅路径字符串大小 |
| 适用对象 | 普通文件 | 文件、目录均可 |
四、常见使用场景
硬链接适用
- 防止误删重要文件(多一份入口)
- 同一文件多处引用,节省磁盘空间
- 日志、备份文件防丢失
软链接适用
- 程序版本切换(如
node -> node-v20) - 跨目录快捷访问
- 给目录做快捷入口
- 跨分区 / 磁盘引用文件
五、高频面试题一句话答案
-
删除原文件,软硬链接会怎样?硬链接:正常访问,数据还在;软链接:失效变红。
-
为什么硬链接不能跨分区?inode 是分区内唯一,跨分区 inode 重复,无法识别。
-
为什么硬链接不能给目录用?会造成目录循环引用,破坏文件系统结构。
六、快速记忆口诀
- 硬链接:同 inode、同数据、不跨区、不目录、删原文件不影响
- 软链接:快捷方式、独立 inode、跨区、可目录、原文件丢就失效
总结
- 想安全共享、防误删 → 用硬链接
- 想快捷访问、跨分区、链目录 → 用软链接
只要记住:硬链接是分身,软链接是快捷方式,永远不会混淆。

144

被折叠的 条评论
为什么被折叠?



