硬链接是让新文件名与原文件共享同一inode,实现数据共享;创建时用ln命令,要求同文件系统且不能对目录操作,删除仅减链接计数,数据在计数为0时才释放。

在 Linux 中建立硬链接,本质就是让新文件名和原文件指向同一个 inode,从而实现数据共享。操作本身很简单,但理解背后的机制才能避免误用。
硬链接的核心是 inode 共享
每个文件在磁盘上由 inode 唯一标识,它存储权限、大小、时间戳、数据块位置等元数据。硬链接不是复制文件内容,而是为已有 inode 新增一个目录项(即文件名)。所以:
- 原文件和硬链接的 inode 号完全相同(可用
ls -i验证); - 它们的权限、所有者、修改时间等元数据始终一致;
- 任一路径写入内容,另一路径立即可见——因为读写的是同一组数据块。
使用 ln 命令创建硬链接
语法非常直接:
ln 源文件 目标链接名
例如:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
ln document.txt backup.txt—— 创建名为backup.txt的硬链接; -
ln /home/user/data.log /tmp/log_ref—— 跨目录也可,只要在同一文件系统内。
注意:不加任何选项时,ln 默认创建硬链接。成功后,源文件的链接计数(ls -l 输出第 2 列)会 +1。
必须满足的两个前提条件
硬链接不是随时都能建的,受底层文件系统机制限制:
-
不能跨文件系统:不同分区或挂载点的 inode 编号空间独立,无法复用。比如
/dev/sda1上的文件不能硬链接到/dev/sdb1; -
不能对目录创建硬链接(普通用户):系统禁止此操作,防止目录树出现循环引用,破坏文件系统结构。只有
.和..是内核允许的例外。
删除行为体现“链接计数”机制
执行 rm 并不等于删数据:
- 每次删除一个硬链接,只是将对应 inode 的链接数减 1;
- 只有当链接数降为 0 时,内核才真正释放数据块和 inode;
- 所以删了原文件,只要还有硬链接存在,数据就完好无损——这正是它可用于轻量备份的原因。

















