Xiao's Blog

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