Linux 软链接详解:ln -s 符号链接与硬链接的实战用法


磁盘满了想给目录换个位置、网站要引用别的目录的文件、升级版本想无缝切换——这些场景都靠软链接(符号链接)解决。ln -s 是 Linux 里最高频的命令之一,很多人只会"创建快捷方式"这一个概念,却不知道它和硬链接的区别、以及软链接在部署里的妙用。这篇文章讲透。

一、什么是软链接

软链接(符号链接)就像 Windows 的快捷方式:它本身是一个指向另一个路径的特殊文件,访问它等于访问目标文件。

ln -s /data/www/blog /var/www/blog     # 创建软链接
ls -l /var/www/                        # 输出里 lrwxrwxrwx ... blog -> /data/www/blog
  • 创建:ln -s 目标 链接名;
  • 查看:ls -l 里以 l 开头,-> 指向目标;
  • 删除:rm 链接名(注意别加 /,否则会删到目标目录)。

二、软链接 vs 硬链接

对比项 软链接(ln -s) 硬链接(ln)
本质 独立文件,存目标路径 同一 inode 的另一个名字
跨文件系统 可以 不可以
链接目录 可以 不可以
目标删除后 链接失效(红链) 数据仍通过其他硬链接存在
ls -l 显示 l 开头 + -> 普通文件,链接数 +1
ln file1 file2              # 硬链接:file1 和 file2 指向同一份数据

实用结论:日常部署、目录迁移、版本切换用软链接;备份场景偶尔用硬链接(省空间、同文件系统)。软链接是绝对的主流。

三、实战场景

1. 磁盘满了,把大目录挪到新磁盘并保留原路径

mkdir -p /data/www && mv /www/wwwroot/site /data/www/site
ln -s /data/www/site /www/wwwroot/site      # 程序仍访问原路径,数据已在 /data

网站代码、日志、备份这类大目录都能这么迁移,无需改任何配置。

2. 版本升级无缝切换

ln -s /usr/local/jdk17 /usr/local/jdk        # 旧版目录
rm /usr/local/jdk && ln -s /usr/local/jdk21 /usr/local/jdk   # 换新版,改一个链接即可

/usr/bin/java 或环境变量里指向 /usr/local/jdk 即可,升级只改链接。

3. 日志软链接到独立盘

mkdir -p /data/logs && ln -s /data/logs /var/log/myapp

4. 共享配置/公共文件

ln -s /srv/certs /etc/nginx/certs
ln -s /opt/uploads /var/www/site/uploads

四、软链接的坑(重点)

  1. 删除链接别加末尾斜杠:rm -rf /var/www/blog/ 会删除目标目录内容,正确是 rm /var/www/blog;
  2. ln -s 参数顺序:ln -s 目标 链接,目标在前、链接在后,写反就变成创建反向链接;
  3. 相对路径链接:ln -s ../data /var/www/data 链接里存相对路径,移动两个文件时仍有效(相对目标文件位置);
  4. 目录权限:软链接本身权限无意义(rwxrwxrwx),实际看目标目录权限;
  5. find 递归陷阱:find /var/www -type l 可列出软链接;某些命令递归时可能死循环(cp -r、tar 处理不当),tar 打包时用 -h 跟随或排除;
  6. 系统工具跟随链接:nginx 的 root 指向软链接目录一般没问题,但有些服务对软链接有安全限制(如部分版本的 sshd 对 authorized_keys 软链接敏感),注意报错。

五、常用操作速查

ln -s /target /link          # 创建软链接
ln -s /target /link1 /dir/   # 在目录里批量创建
readlink /link               # 查看链接指向哪
ls -l /link                  # 查看(显示 -> 目标)
rm /link                     # 删除链接(安全)
test -L /link && echo "是软链接"
find /path -type l -ls       # 列出目录下所有软链接

判断链接是否失效:ls -l 里目标显示红色,或 readlink -f /link 输出不存在路径。

六、总结

软链接一句话:一个指向其他路径的"快捷方式",用 ln -s 目标 链接 创建。三个高频场景——目录迁移保留原路径、版本无缝切换、日志独立盘。三个必记的坑——删除别加 /、参数顺序别写反、rm -rf 别误伤目标。掌握 ln -s,VPS 上的目录和部署管理会顺手很多。


手机扫码阅读

微信或手机浏览器扫一扫,随时随地随心阅读与分享

LNMP 环境搭建教程:Nginx + MySQL + PHP 从零部署网站

Linux 网络诊断工具详解:ping、traceroute、dig、nslookup 实战

评 论
更换验证码