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

Linux 运维中,ln 命令是管理文件复用和路径跳转的核心工具。硬链接和软链接用途不同,选错类型可能导致权限异常、跨分区失败或链接失效,必须按需区分使用。
创建软链接(最常用)
软链接本质是一个独立的小文件,内容是目标路径的字符串,行为类似 Windows 快捷方式。它灵活、安全、支持目录和跨文件系统。
- 基本写法:
ln -s /path/to/target /path/to/link,必须加 -s 参数 - 推荐用绝对路径:避免因工作目录变化导致链接“断开”(相对路径易出错)
- 可链接目录:
ln -s /var/log /home/user/logs,之后访问/home/user/logs就等于访问/var/log - 目标不存在也能创建:适合提前部署、配置未就绪时占位
- 删除源文件后,软链接变“悬挂”(dangling),
ls -l会显示红底白字并提示No such file or directory
创建硬链接(有严格限制)
硬链接不是新文件,而是同一 inode 的另一个名字,与源文件完全等价,修改任一副本,所有副本同步更新。
- 基本写法:
ln /path/to/file /path/to/hardlink,不加任何参数即为硬链接 - 只能用于普通文件:对目录执行会报错
hard link not allowed for directory - 必须同文件系统:不能跨分区或挂载点(如从
/dev/sda1链到/dev/sdb1不行) - 删除源文件不影响硬链接:只要还有一个硬链接存在,文件数据就不会被回收
- 查看是否为同一文件:
ls -i file1 file2,若 inode 号相同,就是硬链接关系
实用技巧与避坑提醒
- 覆盖已有链接时加 -f:例如
ln -sf /new/bin/app /usr/local/bin/app,避免手动先删再建 - 确认操作加 -v:显示“created symbolic link…”便于审计
- 链接到目录时慎用 -n:当目标已是软链接且指向目录,加
-n可防止误删其内容 - 不要给日志、临时文件建硬链接:它们常被轮转(rotate)或清空,硬链接可能意外保留旧数据
- 软链接路径错误?用
readlink -f linkname查看实际解析路径,快速定位问题
怎么判断一个链接是软还是硬?
ls -l 是最快方法:
- 软链接开头是
l,第二字段后带箭头:lrwxrwxrwx 1 user user 12 Jan 1 linkname -> /real/path - 硬链接开头是
-(普通文件),且与源文件ls -i显示相同 inode 号,硬链接数(ls -l第二列)会 ≥2











