Linux 软连接与硬连接比较

特性 软连接(符号链接) 硬连接
本质 指向另一个文件的路径的特殊文件 文件数据的另一个目录项(多个文件名指向同一inode)
inode 有自己的独立inode 与原文件共享同一个inode
跨文件系统 ✅ 可以 ❌ 不可以
链接目录 ✅ 可以 ❌ 不可以
原文件删除后 变成悬空链接(失效) 仍然可以访问数据
大小 存储路径字符串,很小 与原文件相同(不额外占用)
创建命令 ln -s 源文件 链接名 ln 源文件 链接名
文件类型标识 l(ls -l 显示) -(普通文件)

核心原理图解

bash 复制代码
硬连接:
[inode 12345] ← 文件名A
              ← 文件名B  (硬连接)

软连接:
[inode 11111] → 存储路径 "/path/to/target" → [inode 12345] ← 原文件名
[inode 22222] ← 软连接文件名

使用场景建议

软连接适合:

  • 需要跨文件系统

  • 链接目录

  • 快捷方式、版本切换(如 python -> python3.11

  • 需要明确知道原文件是否还存在

硬连接适合:

  • 同一文件系统的备份/快照

  • 需要防止误删除(类似引用计数保护)

  • 节省磁盘空间的多个入口


注意事项

  1. 硬连接不能跨设备(不同分区/磁盘有不同的inode空间)

  2. 硬连接不能链接目录(防止循环引用和无限递归)

  3. 修改任一连接的内容,其他连接都会同步变化(指向同一份数据)

  4. 软连接可以形成循环(例如 A→B,B→A),需注意避免

  5. 软连接的目标路径 :建议使用绝对路径,避免移动后失效


快速验证示例

bash 复制代码
# 创建原文件
echo "hello" > original.txt

# 创建硬连接和软连接
ln original.txt hardlink.txt
ln -s original.txt softlink.txt

# 查看 inode 信息
ls -li original.txt hardlink.txt softlink.txt
# 输出示例:
# 123456 -rw-r--r-- 2 user user 6  original.txt
# 123456 -rw-r--r-- 2 user user 6  hardlink.txt  (相同 inode)
# 789012 lrwxrwxrwx 1 user user 12 softlink.txt -> original.txt

# 删除原文件
rm original.txt

# 硬连接仍可读取
cat hardlink.txt   # 输出: hello

# 软连接失效
cat softlink.txt   # 错误: No such file or directory
相关推荐
云边有个稻草人2 小时前
【Linux系统】第九节—进程状态续集+进程优先级+进程切换
linux·进程状态·进程优先级·linux进程调度算法·linux进程切换·死循环进程如何运行·pri and ni
草莓熊Lotso2 小时前
Linux 线程同步与互斥(二):线程同步从条件变量到生产者消费者模型全解,原理 + 源码彻底吃透
linux·运维·服务器·c语言·开发语言·数据库·c++
eEKI DAND2 小时前
一个比 Nginx 还简单的 Web 服务器
服务器·前端·nginx
小郑加油2 小时前
python学习Day6-7天:条件判断与基本综合应用
java·服务器·apache
程序员老邢2 小时前
【技术底稿 17】DevOps 监控告警实战踩坑复盘 —— 企微机器人告警 + Milvus 向量库监控全流程验证
运维·机器人·企业微信·devops·milvus
ITOWARE_SAPer10 小时前
选择SAP实施公司能否兼得官方授权与高性价比?
运维·能源·制造·零售
开压路机11 小时前
进程控制
linux·服务器
香蕉鼠片11 小时前
跨平台开发到底是什么
linux·windows·macos
Elastic 中国社区官方博客11 小时前
Elasticsearch:快速近似 ES|QL - 第一部分
大数据·运维·数据库·elasticsearch·搜索引擎·全文检索