linux 中的硬连接和软连接有什么区别

linux 中的硬连接和软连接有什么区别

前言

在 Linux 中,硬连接(Hard Link) 和 软连接(Soft Link,也称符号链接 Symbolic Link) 都是文件系统中的链接方式,但它们在实现方式、作用机制和使用场景上有很大区别。

✅ 一图对比

特性 硬连接(Hard Link) 软连接(Soft Link / Symbolic Link)
本质 指向同一个 inode 创建一个指向目标路径的特殊文件
是否跨分区 ❌ 不支持跨文件系统或分区 ✅ 可以跨文件系统
是否能指向目录 一般❌(默认不允许) ✅ 可以指向目录
原文件删除后是否可用 ✅ 内容仍然可访问(还有引用) ❌ 链接失效(称为“悬挂链接”)
创建命令 ln 原文件 新文件 ln -s 原文件 新文件
文件类型显示 普通文件 l(在 ls -l 中会显示为链接)
占用空间 不额外占用 占用少量磁盘空间(存储路径字符串)

🔍 举例说明

1. 创建硬连接

touch file1.txt
ln file1.txt file1_hard.txt

特点:

  • file1.txt 和 file1_hard.txt 都指向同一个 inode。
  • 改动其中一个文件的内容,另一个也会同步变化。
  • 删除其中一个不影响另一个文件的内容。

由于两个文件都指向同一个inode,并且删除其中一个连接不会影响另外一个的连接,所以可以利用此特性去drop mysql的大表。

2. 创建软连接

ln -s file1.txt file1_soft.txt

特点:

  • file1_soft.txt 只是一个指向 file1.txt 的快捷方式。
  • 删除 file1.txt 后,file1_soft.txt 会变成“断链”,打不开。

inode 概念补充

  • 每个文件在 Linux 中由一个 inode 编号唯一表示。
  • 硬链接本质是给同一个 inode 增加多个目录项。
  • 软链接是一个新的文件,内容是目标文件的路径名。

可以用 ls -li 命令查看 inode:

ls -li file1.txt file1_hard.txt

你会看到它们的 inode 编号相同(硬链接),而软链接的 inode 不同。

总结

适用场景 建议使用链接类型
在同一分区共享文件内容 硬链接
跨分区/指向目录或快捷方式 软链接
posted @ 2025-07-07 16:27  数据库小白(专注)  阅读(64)  评论(0)    收藏  举报