温馨提示×

软连接和硬链接区别在哪

小樊
36
2026-10-09 16:03:27
栏目: 编程语言

在 Linux / Unix 文件系统中,**软链接(符号链接,Symbolic Link)和硬链接(Hard Link)**都是用于文件引用的方式,但它们在实现机制和使用上有明显区别。


一、硬链接(Hard Link)

本质:
硬链接是同一个文件的一个别名,多个文件名指向同一个 inode(文件数据块)。

特点

  • 硬链接和原文件 共享同一个 inode
  • 删除其中一个文件名,文件数据仍然存在(只要还有一个链接)
  • 不能跨文件系统(不同分区不能建硬链接)
  • 不能对目录创建硬链接(防止循环)
  • 修改任意一个名字对应的文件内容,其他名字看到的内容都会变

创建方式

ln 源文件 硬链接名

示例

ln a.txt b.txt

a.txt 和 b.txt 指向同一份数据。


二、软链接(Symbolic Link / 软连接)

本质:
软链接是一个特殊的文件,里面保存的是原文件的路径。

特点

  • 软链接有自己的 inode
  • 软链接可以跨文件系统
  • 可以对文件或目录创建软链接
  • 原文件被删除后,软链接会失效(变成“断链”)
  • 类似 Windows 的“快捷方式”

创建方式

ln -s 源文件 软链接名

示例

ln -s a.txt link.txt

link.txt 指向 a.txt 的路径。


三、核心区别对比表

对比项 硬链接 软链接
是否同一 inode ✅ 是 ❌ 否
是否跨文件系统 ❌ 不支持 ✅ 支持
能否链接目录 ❌ 不能 ✅ 能
原文件删除 文件仍可访问 链接失效
占用空间 几乎不占 占用少量
类似概念 文件别名 快捷方式

四、简单记忆口诀

  • 硬链接:同体不同名
  • 软链接:指路不背人

如果你愿意,我也可以用图示或实际命令演示帮你更直观地理解。

0 踩