硬链接共享inode且不能跨文件系统,删除原文件不影响访问;软链接是独立文件可跨系统,原文件删除后失效。使用ln创建硬链接,ln -s创建软链接,推荐绝对路径避免失效。

在linux系统中,ln 命令用于创建链接文件,分为硬链接(hard link)和符号链接(symbolic link,也叫软链接)。理解它们的区别和使用方法对文件管理非常重要。
硬链接与软链接的区别
硬链接是文件的另一个名字,指向同一个 inode,不能跨文件系统,也不能链接到目录。删除原文件不影响硬链接访问数据。
软链接类似于快捷方式,是一个独立文件,包含目标路径字符串。可以跨文件系统,也能链接目录。如果原文件被删除,软链接会失效(变成“悬空链接”)。
创建硬链接
语法格式:
ln 源文件 目标链接
示例:
- ln file.txt hardlink_file —— 创建 file.txt 的硬链接 hardlink_file
- 此后修改 hardlink_file 或 file.txt,内容同步,因为它们是同一个文件的不同名称
创建软链接
使用 -s 选项创建符号链接:
ln -s 源文件或目录 软链接名
示例:
- ln -s /home/user/docs document_link —— 创建指向 docs 的软链接
- ln -s ../config.conf config_link —— 创建相对路径的软链接
推荐使用绝对路径避免链接失效,尤其当软链接被移动时。
查看链接信息
用 ls -l 查看文件详情:
- 普通文件显示为:-rw-r–r–
- 软链接显示为:lrwxrwxrwx,并标明指向的目标,如 config_link -> ../config.conf
- 硬链接不会特别标注,但通过 inode 号判断:ls -i file.txt hardlink_file 显示相同 inode 即为硬链接
注意事项与常见问题
- 不能对目录创建硬链接(除非超级用户且文件系统支持)
- 创建链接时,目标文件名不能已存在(否则报错),可用 -f 强制覆盖:ln -sf new_target link_name
- 删除源文件后,硬链接仍可访问数据;软链接则失效,显示为红色或带问号(取决于终端颜色设置)
- 循环软链接(A 链向 B,B 链向 A)会导致递归错误,应避免
基本上就这些。掌握 ln 命令的关键在于分清硬链接和软链接的用途:需要数据冗余备份用硬链接,需要灵活路径引用或跨系统链接用软链接。


