Sep 30, 2025
Linux下软链接和硬链接区别
1. 定义和原理
- 硬链接:是对文件的一个直接引用。多个硬链接指向同一个 inode(即文件的唯一标识),它们是等价的,每一个都像原始文件一样。
- 软链接:是一个特殊的文件,内容是指向目标文件路径的字符串,相当于 Windows 下的快捷方式。
2. inode 和文件数据块
- 硬链接:与原文件共享 inode 号。删除任意一个硬链接,其他硬链接和数据仍然存在,只有所有硬链接都删除后,文件数据才会被释放。
- 软链接:有自己独立的 inode,存储的是目标文件路径,不直接指向数据块。
3. 跨文件系统
- 硬链接:只能在同一个文件系统(分区)内创建,不能跨分区。
- 软链接:可以跨文件系统或分区,只要路径能访问即可。
4. 对目录的支持
- 硬链接:普通用户不能对目录创建硬链接(防止循环和混乱),只有超级用户可以在特定情况下创建。
- 软链接:可以对文件和目录都创建软链接。
5. 断链问题
- 硬链接:只要有一个硬链接在,文件数据就能访问。
- 软链接:如果目标文件删除或移动,软链接就“失效”变成死链(Broken Link)。
6. 显示方式
- 使用
ls -l
命令:
- 硬链接:和普通文件一样显示。
- 软链接:显示为
目标文件 -> 源文件
的形式,如 link.txt -> target.txt
7. 创建方式
- 硬链接:
ln 源文件 硬链接文件
- 软链接:
ln -s 源文件 软链接文件
总结对比表
类型 |
是否跨分区 |
是否可对目录 |
inode关系 |
删除原文件影响 |
创建命令 |
硬链接 |
否 |
否 |
相同 |
无影响 |
ln 源 目标 |
软链接 |
是 |
是 |
不同 |
链接失效 |
ln -s 源 目标 |
OLDER >
< NEWER