Linux 软链接和硬链接入门 给文件开个快捷方式

举报
yd_286960584 发表于 2026/11/11 15:51:22 2026/11/11
【摘要】 同一个大文件要在好几个目录里用,复制来复制去又占空间又怕版本对不上;或者程序认死了一个固定路径,文件挪了地方它就罢工。Linux 的链接就是来解决这个的:给文件多起一个名字,或者开一个指向它的快捷方式。本文讲清硬链接和软链接到底有什么区别、各自怎么建、怎么分辨,以及删链接时最容易伤到真文件的一个坑。先说硬链接。用 ln 源文件 新名字 就能建,它的效果是给同一份数据多起了一个名字,两个名字指...

同一个大文件要在好几个目录里用,复制来复制去又占空间又怕版本对不上;或者程序认死了一个固定路径,文件挪了地方它就罢工。Linux 的链接就是来解决这个的:给文件多起一个名字,或者开一个指向它的快捷方式。本文讲清硬链接和软链接到底有什么区别、各自怎么建、怎么分辨,以及删链接时最容易伤到真文件的一个坑。

先说硬链接。用 ln 源文件 新名字 就能建,它的效果是给同一份数据多起了一个名字,两个名字指向的是磁盘上同一份内容。用 ls 看它们大小一样、修改时间同步,你改其中一个,另一个打开也是新内容,因为压根就是同一份东西。删掉其中一个名字,数据还在,只有所有名字都删光,这份数据才真正消失。硬链接有两个硬限制:不能给目录建,怕把目录结构绕成死循环;不能跨磁盘分区,因为它靠的是文件在本分区里的编号,出了分区就不认。
软链接是另一回事,就是常说的符号链接,用 ln -s 源路径 链接名 来建。它本身只是一个小小的指路牌,里面记着源文件在哪,打开它等于顺着牌子去找源文件,跟 Windows 的快捷方式是一回事。所以源文件被删掉或者挪了地方,牌子就指向了空气,链接当场失效,终端里常显示成红色。它没有硬链接那些限制:可以跨分区,可以指向目录。正因为灵活,实际用得最多的是它:网站版本发布时,让一个叫 current 的软链接指向当前版本目录,换版本只要把链接改指向新目录,出问题再指回去,回滚就是一秒的事。
分辨两者不难。ls -l 看过去,软链接那一行开头是字母 l,后面还带着箭头写明指向谁,用 readlink 链接名 能直接问出它指向的路径;硬链接看起来和普通文件一模一样,只能看 ls -li 的第一列编号,编号相同的就是同一份数据的不同名字。记一个总原则:需要跨目录跨分区指路、指目录,用软链接;需要给重要文件多留一个同生共死的备份名字,用硬链接。
实际工作中最常见的用法就三类。第一,程序要求配置文件在固定位置,又想把配置集中放在别处管理,用软链接指过去,两全其美。第二,几个项目共用一份大体积的公共文件,硬链接省空间还保证大家看到的是同一版本。第三,日志、数据目录快把系统盘占满时,把真身挪到大磁盘上,原位置留个软链接,程序毫无察觉,迁移成本最低。
最后这个坑必须单独说:删软链接时只删链接本身,用 rm 链接名 就够了,千万别在指向目录的软链接后面加一串参数顺着链接去删里面的内容,那删掉的是真文件真目录,事故多半就这么来的。同样,软链接指向的源文件别随便改名移动,改完记得把链接一起更新;发布系统里用软链接切版本之前,先拿测试环境把新目录验一遍再切,别让回滚的后悔药本身成为事故源。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。