Linux 软连接(符号链接)与硬链接 完整对比+实操示例
一、核心区别
-
硬链接(hard link)
是文件的多个别名 ,与原文件共用同一个 inode 索引节点,本质就是同一个文件。
-
软连接(symbolic link)
相当于快捷方式,是独立小文件,只存原文件路径,有自己独立的 inode。
二、详细对比
| 对比项 | 硬链接 | 软连接 |
|---|---|---|
| 本质 | 同一文件的多个入口 | 指向原文件的快捷方式 |
| 独立文件 | 否,共用 inode | 是,拥有独立 inode |
| 跨分区/磁盘 | ❌ 不支持 | ✅ 支持 |
| 链接目录 | ❌ 系统禁止 | ✅ 支持 |
| 原文件删除后 | 链接仍可用,数据不丢失 | 链接失效,变成坏链接 |
| 相对/绝对路径 | 不依赖路径 | 支持两种路径 |
| 占用空间 | 几乎不占 | 仅存路径字符串大小 |
三、通俗理解
- 硬链接:一本书贴了多个书名标签,撕掉一个标签,书本身还在。
- 软连接:一张写着"文件在哪"的纸条,原文件没了,纸条就失效。
四、实操命令+测试示例
1. 创建测试文件
bash
echo "test link" > test.txt
2. 创建硬链接
bash
# 格式:ln 原文件 链接名
ln test.txt hard_link.txt
3. 创建软连接
bash
# 格式:ln -s 原文件 链接名
ln -s test.txt soft_link.txt
4. 查看 inode(验证是否共用)
bash
ls -i test.txt hard_link.txt soft_link.txt
test.txt和hard_link.txtinode 号相同soft_link.txtinode 号不同
5. 删除原文件,观察效果
bash
rm -f test.txt
-
查看硬链接 :内容正常,文件依然存在
bashcat hard_link.txt -
查看软连接 :提示不存在,链接失效
bashcat soft_link.txt # 报错:No such file or directory