Linux 中的硬链接和软连接是什么,二者有什么区别?

最后更新:1/12/2026

AI 助手

会员专享功能

只有会员才能使用 AI 生成答案功能。 立即升级

Other Answers (1)

Generated by DeepSeek V3

Linux 中的硬链接和软连接

1. 基本概念

  • 是文件系统中一个文件的另一个名称
  • 直接指向原始文件的inode(索引节点)
  • 本质上和原文件是同一个文件的不同名称
  • 是一个特殊类型的文件,包含另一个文件的路径名
  • 类似于Windows中的快捷方式
  • 独立于原始文件存在,有自己的inode

2. 主要区别

特性 硬链接 软连接
Inode 与原文件相同 有自己的inode
跨文件系统 不支持 支持
目录链接 通常不允许(需超级用户权限) 允许
原始文件删除 仍然可以访问 链接失效(成为悬空链接)
文件大小 与原始文件相同 存储的是路径名长度
更新行为 自动更新 需要重新创建
命令 ln 源文件 硬链接 ln -s 源文件 软链接

3. 示例演示

创建示例文件

bash
echo "Hello World" > original.txt

创建硬链接

bash
ln original.txt hardlink.txt

创建软连接

bash
ln -s original.txt softlink.txt

查看inode信息

bash
ls -li original.txt hardlink.txt softlink.txt

输出示例:

basic
12345 -rw-r--r-- 2 user group 12 Jun 1 10:00 hardlink.txt
12345 -rw-r--r-- 2 user group 12 Jun 1 10:00 original.txt
67890 lrwxrwxrwx 1 user group 11 Jun 1 10:00 softlink.txt -> original.txt

删除原始文件后的行为

bash
rm original.txt
cat hardlink.txt    # 仍然可以访问内容
cat softlink.txt    # 会提示"没有那个文件或目录"

4. 使用场景

硬链接适用场景

  • 需要多个名称指向同一个文件
  • 确保即使原始名称被删除也能访问文件内容
  • 同一文件系统内的链接需求

软连接适用场景

  • 需要跨文件系统链接
  • 需要链接到目录
  • 需要创建相对路径链接
  • 需要指向可能不存在的文件(动态链接)

5. 其他注意事项

  1. 硬链接会增加文件的链接计数(见ls -l输出的第二列)
  2. 使用find命令时,硬链接会被视为相同文件,而软连接则不会
  3. 软连接可以指向不存在的目标,硬链接则不行
  4. 系统关键文件通常使用硬链接(如/bin和/usr/bin中的某些命令)