Linux 中的硬链接和软连接是什么,二者有什么区别?
最后更新:1/12/2026
AI 助手
会员专享功能
只有会员才能使用 AI 生成答案功能。 立即升级
Other Answers (1)
Generated by DeepSeek V3
Linux 中的硬链接和软连接
1. 基本概念
硬链接 (Hard Link)
- 是文件系统中一个文件的另一个名称
- 直接指向原始文件的inode(索引节点)
- 本质上和原文件是同一个文件的不同名称
软连接 (Symbolic Link 或 Soft Link)
- 是一个特殊类型的文件,包含另一个文件的路径名
- 类似于Windows中的快捷方式
- 独立于原始文件存在,有自己的inode
2. 主要区别
| 特性 | 硬链接 | 软连接 |
|---|---|---|
| Inode | 与原文件相同 | 有自己的inode |
| 跨文件系统 | 不支持 | 支持 |
| 目录链接 | 通常不允许(需超级用户权限) | 允许 |
| 原始文件删除 | 仍然可以访问 | 链接失效(成为悬空链接) |
| 文件大小 | 与原始文件相同 | 存储的是路径名长度 |
| 更新行为 | 自动更新 | 需要重新创建 |
| 命令 | ln 源文件 硬链接 |
ln -s 源文件 软链接 |
3. 示例演示
创建示例文件
echo "Hello World" > original.txt
创建硬链接
ln original.txt hardlink.txt
创建软连接
ln -s original.txt softlink.txt
查看inode信息
ls -li original.txt hardlink.txt softlink.txt
输出示例:
12345 -rw-r--r-- 2 user group 12 Jun 1 10:00 hardlink.txt
12345 -rw-r--r-- 2 user group 12 Jun 1 10:00 original.txt
67890 lrwxrwxrwx 1 user group 11 Jun 1 10:00 softlink.txt -> original.txt
删除原始文件后的行为
rm original.txt
cat hardlink.txt # 仍然可以访问内容
cat softlink.txt # 会提示"没有那个文件或目录"
4. 使用场景
硬链接适用场景:
- 需要多个名称指向同一个文件
- 确保即使原始名称被删除也能访问文件内容
- 同一文件系统内的链接需求
软连接适用场景:
- 需要跨文件系统链接
- 需要链接到目录
- 需要创建相对路径链接
- 需要指向可能不存在的文件(动态链接)
5. 其他注意事项
- 硬链接会增加文件的链接计数(见
ls -l输出的第二列) - 使用
find命令时,硬链接会被视为相同文件,而软连接则不会 - 软连接可以指向不存在的目标,硬链接则不行
- 系统关键文件通常使用硬链接(如/bin和/usr/bin中的某些命令)