创建软链接用ln -s 源文件 目标链接,硬链接用ln 源文件 目标链接;软链接有独立inode、仅存路径字符串,可跨文件系统和链接目录,源文件删除则失效;硬链接共享源文件inode、本质是同一文件的多个名字,不可跨文件系统或链接目录,删除任一硬链接不影响数据。

创建软链接用 ln -s 源文件 目标链接,硬链接用 ln 源文件 目标链接;关键区别在于:软链接有独立 inode,只存路径字符串;硬链接共享源文件的 inode,本质是同一文件的多个名字。
怎么创建软链接
软链接(符号链接)相当于一个“快捷方式”,它本身是一个独立的小文件,内容就是目标路径的字符串。
- 语法固定:必须加 -s 参数,否则默认创建硬链接
- 示例:
ln -s /home/user/config.conf ~/.config.conf,之后访问~/.config.conf就等同于访问原文件 - 支持跨分区、跨文件系统,也能对目录创建软链接
- 源文件被删,软链接就失效(
ls -l显示红色闪烁,cat报 “No such file or directory”)
怎么创建硬链接
硬链接不是副本,而是让另一个文件名直接指向同一个 inode,和源文件完全等价。
特色介绍: 1、ASP+XML+XSLT开发,代码、界面、样式全分离,可快速开发 2、支持语言包,支持多模板,ASP文件中无任何HTML or 中文 3、无限级分类,无限级菜单,自由排序 4、自定义版头(用于不规则页面) 5、自动查找无用的上传文件与空目录,并有回收站,可删除、还原、永久删除 6、增强的Cache管理,可单独管理单个Cache 7、以内存和XML做为Cache,兼顾性能与消耗 8、
- 语法简单:不加任何参数,
ln 源文件 新名字 - 示例:
ln data.log backup.log,此时data.log和backup.log内容实时同步,修改任一,另一方立刻可见 - 不能对目录创建硬链接(系统禁止,防止循环引用和目录结构混乱)
- 必须在同一个文件系统(同一分区)内,因为 inode 号仅在本分区唯一
Inode 层面的本质区别
理解链接,核心是看 inode 是否相同、链接数如何变化、数据块是否共用。
-
硬链接:
ls -i查看,源文件与硬链接显示相同 inode 号;ls -l权限列前的数字(链接数)会 +1;删除源文件只是减 1,只要链接数 >0,数据块就不会释放 -
软链接:有自己的 inode(
ls -i号不同),类型为l(小写 L);链接数始终为 1;它不共享数据块,只存储一串文本路径;读取时由内核自动跳转,多一次路径解析开销 - 补充一点:目录的硬链接数默认 ≥2(因为
.和..都算链接),而普通文件新建时链接数为 1
什么时候该选哪一种
实际使用中,90% 场景用软链接更安全灵活。
- 需要指向目录、跨分区、或希望链接可独立存在(比如部署时切换版本目录),选 软链接
- 需要确保即使误删原始文件名仍能保全数据,且严格限定在同一分区内,可考虑 硬链接(如日志归档、备份快照)
- 注意:程序或脚本中用
readlink -f可展开软链接得到真实路径;用stat能清晰对比两者的 inode、设备号、链接数等底层信息










