首页/系统/信创系统运维速查/软链接与硬链接
命令与包管理65 条

软链接与硬链接

ln -s 建软链(跨文件系统、指向路径),硬链接共享 inode 只能同文件系统;发布目录切换与版本管理常用软链。

信创系统运维速查系统更新于 2026-10-13

两种链接的区别

硬链接指向同一个 inode,等价于给文件多起了一个名字:删掉其中一个名字数据还在,且不能跨文件系统、不能指向目录。软链接(符号链接)是一个独立的小文件,里面存的是目标路径,可以跨分区、可以指向目录,目标被删掉就悬空。发布部署中最常用的是软链的『版本目录 + 活动链接』模式,切换与回滚都是秒级操作。

基本信息

软链接ln -s 目标 链接名(目标写相对或绝对路径均可)
硬链接ln 目标 链接名(同一文件系统内,不能指向目录)
更新软链ln -sfn 新目标 现有链接名
查看指向ls -l、readlink -f、namei -l
删除链接rm 链接名(不会删除目标本体,注意结尾斜杠会改变语义)
权限要求普通用户;在系统目录创建需 root

典型使用场景

  • 发布目录做版本切换:/opt/app 指向具体版本目录,回滚只需再切一次
  • 把数据盘上的目录软链到系统预期路径,避免大目录占用根分区
  • 给长命令或工具起短别名,减少运维输入量
  • 同一份文件需要在多个目录可见又不想占用额外空间时用硬链接
  • 迁移后保留旧路径的可达性,让老脚本继续可用

典型用法

典型用法
ln -s /opt/app-1.2.0 /opt/app            # 建软链,/opt/app 指向版本目录
ln -sfn /opt/app-1.3.0 /opt/app          # 原子切换版本;-n 防止在目录内部再建一层链接
ls -l /opt/app                            # 看链接指向,箭头右侧才是真实目标
readlink -f /opt/app                      # 解析出最终真实路径,排查悬空链接最有用
namei -l /opt/app/config/app.conf         # 逐层列出路径各段的权限与属主
ln /data/report.csv /data/report.bak.csv  # 硬链接:同一文件两个名字,数据只有一份

排障与清理

排障与清理
find /opt -xtype l                       # 找出悬空(失效)的软链接
ls -ld /opt/app/                          # 结尾加斜杠会跟随链接,跟不加斜杠的语义不同
rm /opt/app-old                           # 删链接不删目标;确认无误再执行
readlink /opt/app                         # 只输出链接内容,不做解析
stat -c '%i %n' /data/report.csv /data/report.bak.csv   # 硬链接两者 inode 相同

对比与判读

维度软链接硬链接
跨文件系统支持不支持
指向目录支持不支持
目标被删链接悬空失效数据仍可通过另一名字访问
占用空间一个 inode 大小的链接文件不额外占用数据空间
删除链接本身只删链接相当于删掉一个名字,计数减一
ls -l 表现显示箭头指向 目标显示为普通文件,需用 stat 看 inode
相对路径的软链按链接所在目录解析,而不是执行命令时的当前目录:写 ln -s ../data/file link 之前先想清链接会被放在哪。
给目录做软链时更新必须带 -n,否则 ln -sf 会把新链接建到目标目录内部,出现 /opt/app/app-1.3.0 这种层级错乱的路径。

易错点

  • 更新目录软链时漏掉 -n,新链接被建进目标目录内部形成嵌套,服务按旧路径读到的还是老版本
  • 用相对路径建软链,链接被移动到别处后按新位置解析导致悬空,跨目录使用时应写绝对路径
  • rm 或 mv 带结尾斜杠操作链接名,语义变成操作目标目录内容,可能误删真实数据
  • 把软链当备份:目标文件被覆盖或删除后链接立刻失效,数据并不会因为存在链接而被保留
  • 清理旧版本目录前没有检查软链指向,删掉了当前活动版本目录,服务重启后直接起不来

数据来源与参考

  • GNU coreutils ln 手册
  • 部署实践
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌