硬链接共享inode,是同一文件的多个名称,不可跨文件系统且不能用于目录;软链接是独立文件,存储目标路径,可跨文件系统并支持目录,原文件删除后失效。

软链接和硬链接都是Linux中用于创建文件引用的方式,但它们在底层机制和使用行为上有本质区别。
硬链接(Hard Link)
硬链接是指多个文件名指向同一个 inode(索引节点)。这意味着所有硬链接和原文件实际上是同一个文件,只是有多个名字。删除其中一个名字,文件内容依然存在,只要至少还有一个硬链接存在。
- 不能跨文件系统创建(因为inode只在同一个文件系统内唯一)
- 不能对目录创建硬链接(出于防止循环引用等系统安全考虑)
- 删除原文件不影响其他硬链接,数据仍然可访问
- 所有硬链接共享相同的文件权限、所有者、时间戳和内容
软链接(Symbolic Link,又称符号链接)
软链接是一个独立的小文件,它记录的是另一个文件的路径名。它有自己的inode和文件内容(内容就是目标路径),就像一个快捷方式。
- 可以跨文件系统创建
- 可以链接到目录
- 如果原文件被删除,软链接就变成“悬空链接”,访问会报错
- 软链接的权限不重要,实际权限由目标文件决定
关键区别总结
从使用角度看:
- inode:硬链接共享同一个inode;软链接有独立inode
- 文件类型:硬链接只能用于普通文件;软链接可以用于文件和目录
- 跨文件系统:硬链接不行;软链接可以
- 原文件删除后:硬链接仍可访问数据;软链接失效
- 查看方式:使用 ls -l 时,软链接会显示指向路径(如 file -> target),硬链接则看不出区别
基本上就这些。硬链接更像“别名”,软链接更像“快捷方式”。选择哪种取决于使用场景和需求。不复杂但容易忽略细节。










