Linux软连接和硬连接
Linux软连接和硬连接
1. 核心概念
类型 | 软连接(Symbolic Link) | 硬连接(Hard Link) |
本质 | 类似于 Windows 的“快捷方式” | 是文件的另一个名字(指向同一个 inode) |
存储方式 | 独立文件,存储目标文件的路径 | 直接指向原文件的 inode(数据块) |
跨分区支持 | ✅ 支持(路径可跨磁盘) | ❌ 不支持(必须同一文件系统) |
原文件删除 | 软连接失效(变成“死链”) | 硬连接仍可访问文件数据 |
文件属性 | 权限始终是 | 权限与原文件相同 |
2. 技术原理
- inode(索引节点):Linux 文件系统的核心元数据,存储文件属性(权限、大小、数据块位置等)。
- 硬连接:多个文件名指向同一个 inode(引用计数 +1)。
- 软连接:独立 inode,其数据块中存储目标文件的路径字符串。
文件系统结构示例:
原文件:/data/file.txt (inode 100)
硬连接:/backup/file.txt → inode 100
软连接:/tmp/link → 路径 "/data/file.txt"
3. 命令对比
操作 | 软连接 | 硬连接 |
创建 |
|
|
查看 |
显示链接路径(如 |
查看 inode 是否相同 |
删除原文件 |
→ 软连接失效 |
→ 硬连接仍有效 |
4. 通俗例子
- 硬连接:文件的“曾用名”
-
- 你本名是
张三
,后来改名叫张老三
,但身份证号(inode)不变。 - 别人无论叫哪个名字,都能找到你(文件数据)。
- 直到所有名字都被删除(引用计数归零),文件才真正消失。
- 你本名是
- 软连接:便利贴指引
-
- 你在办公室门口贴纸条:“资料在 3 楼 A 柜”。
- 若有人搬走柜子(删除原文件),纸条就失效了。
- 若纸条被撕掉(删除软连接),不影响原文件。
5. 使用场景
场景 | 推荐类型 | 原因 |
跨磁盘/分区引用文件 | 软连接 | 硬连接无法跨文件系统 |
需要备份防止误删 | 硬连接 | 原文件删除后数据仍存在 |
动态切换配置文件版本 | 软连接 | 修改链接目标即可(如 |
6. 注意事项
- 硬连接不能链接目录(避免循环引用),软连接可以。
- 修改硬连接文件会直接影响原文件(同一数据块),而软连接只是路径跳转。
- 查找所有硬连接:
find / -samefile 原文件
。
总结:
- 硬连接是“文件分身”,软连接是“指路牌”。
- 需要备份?用硬连接;需要灵活跳转?用软连接。