软链接是独立文件,存储目标路径,支持跨文件系统和目录链接;硬链接是同一inode的多个目录项,不支持跨文件系统和目录,删除原文件不影响访问。

在 Linux 中配置软链接和硬链接,核心是用 ln 命令,但两者原理、限制和使用方式完全不同。关键不是死记命令,而是理解它们在文件系统中如何工作——软链接是“路径指针”,硬链接是“同一文件的多个名字”。
软链接:用 ln -s 创建路径引用
软链接是一个独立文件,内容就是目标路径字符串。它不依赖原文件是否真实存在,创建时即可指向不存在的路径。
- 基本语法:
ln -s 目标路径 链接名,目标可以是文件或目录,也支持相对路径 - 相对路径解析起点是软链接文件自身所在目录,不是你执行命令时的工作目录。例如在
/home/user下运行ln -s ../data/file.txt link,则link会从/home/user出发找../data/file.txt - 创建后用
ls -l查看,会显示类似lrwxrwxrwx 1 user user 12 Aug 7 02:00 link -> ../data/file.txt,开头的l和箭头->是明显标识 - 目标被删除或移动后,软链接变成悬空链接(dangling link),访问时报 “No such file or directory”
硬链接:用 ln(不带 -s)创建同 inode 多入口
硬链接不是新文件,只是在目录中新增一条“文件名 → inode 编号”的映射。它和原文件共享完全相同的 inode、权限、数据块和修改时间。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 基本语法:
ln 源文件 硬链接名,源文件必须已存在,且不能是目录(系统禁止对目录建硬链接) - 跨文件系统不可行,因为不同分区/磁盘的 inode 编号空间互不相干
- 创建后用
ls -li查看,两个文件显示相同 inode 号,且权限列第二字段(链接数)加 1,比如从1变成2 - 删除原文件不影响硬链接访问——只要还有一个硬链接存在,inode 的链接计数就大于 0,文件数据就不会被真正释放
怎么选?看实际需求
软链接适合灵活场景:跨磁盘挂载点、为长路径起简短别名、链接到可能迁移的软件安装目录、或需要链接目录时。硬链接适合安全冗余:防止误删(如重要配置文件多建一个硬链接)、避免复制大文件、确保多个路径访问的是完全一致的数据副本。
不复杂但容易忽略:软链接可指向任意路径甚至不存在的目标;硬链接只能作用于当前文件系统内的已有普通文件。

















