在 Linux / Unix 文件系统中,**软链接(符号链接,Symbolic Link)和硬链接(Hard Link)**都是用于文件引用的方式,但它们在实现机制和使用上有明显区别。
本质:
硬链接是同一个文件的一个别名,多个文件名指向同一个 inode(文件数据块)。
ln 源文件 硬链接名
ln a.txt b.txt
a.txt 和 b.txt 指向同一份数据。
本质:
软链接是一个特殊的文件,里面保存的是原文件的路径。
ln -s 源文件 软链接名
ln -s a.txt link.txt
link.txt 指向 a.txt 的路径。
| 对比项 | 硬链接 | 软链接 |
|---|---|---|
| 是否同一 inode | ✅ 是 | ❌ 否 |
| 是否跨文件系统 | ❌ 不支持 | ✅ 支持 |
| 能否链接目录 | ❌ 不能 | ✅ 能 |
| 原文件删除 | 文件仍可访问 | 链接失效 |
| 占用空间 | 几乎不占 | 占用少量 |
| 类似概念 | 文件别名 | 快捷方式 |
如果你愿意,我也可以用图示或实际命令演示帮你更直观地理解。