游乐游手机版
首页/系统平台/文章详情

Unix系统硬链接与软链接区别详解

时间:2026-06-19 07:49
简单来说,在 Linux 或 Unix 系统中,链接(Link)相当于文件系统里的“快捷方式”或“别名”。通过链接,你可以快速指向某个目标,省去手动输入一长串路径的麻烦,也无需一次次用 cd 进入深层目录。如果你用过 Windows 桌面上的程序图标,应该不会感到陌生——那本质上就是一种快捷方式。不

简单来说,在 Linux 或 Unix 系统中,链接(Link)相当于文件系统里的“快捷方式”或“别名”。通过链接,你可以快速指向某个目标,省去手动输入一长串路径的麻烦,也无需一次次用 cd 进入深层目录。如果你用过 Windows 桌面上的程序图标,应该不会感到陌生——那本质上就是一种快捷方式。不过,Unix 下的链接与 Windows 的快捷方式存在本质区别,并且主要分为两种:硬链接(Hard Link)和软链接(Symbolic Link,也称符号链接)。下面我们来逐一拆解。

硬链接

硬链接本质上是一个目录条目,它与原始文件共享同一个 i-node(即硬盘上的物理存储位置)。换句话说,硬盘上只保存一份真实数据,但两个或多个目录条目都指向这份数据。创建一个硬链接非常简单:

ln /usr/local/etc/rc.d/nginx nginx

这条命令会在当前目录下生成一个名为 nginx 的文件,它直接指向 /usr/local/etc/rc.d/nginx 这个原始文件。之后,当你需要编辑或执行那个远程配置文件时,只需操作短名称 nginx 即可,不再需要输入长长的绝对路径。例如,直接执行 vi nginx 就等同于执行 vi /usr/local/etc/rc.d/nginx

Unix系统中的硬链接和软链接详解

使用 ls -l 查看硬链接文件,你会发现它的权限、大小、修改时间与原始文件完全一致——因为它们实际上是同一个文件的另一个入口。如果你修改硬链接的权限,原始文件也会随之改变。

Unix系统中的硬链接和软链接详解

当你用 rm 删除其中一个硬链接时,链接计数会减 1。但只要还存在另一个硬链接,文件数据就不会被真正删除。只有当所有硬链接都被删除、链接数归零时,系统才会释放对应的硬盘空间。

值得注意的是:硬链接有两个天生的局限性——不能用于目录,也不能跨越不同的文件系统(例如,不能将 ext4 分区上的文件硬链接到 XFS 分区)。

软链接

软链接也叫符号链接(Symlinks),与 Windows 的快捷方式更为相似。与硬链接不同,软链接是一个独立的文件,拥有自己的 i-node。它里面只存放了一个指针,指向另一个文件的路径。创建软链接的命令是 ln -s

ln -s /etc/rc.conf a

然后用 ls -l -b 查看:

Unix系统中的硬链接和软链接详解

现在要编辑 /etc/rc.conf,直接运行 vi a 即可。不过,如果系统提示“No such file or directory”,但 ls 又能够看到这个链接文件,说明该软链接已经“悬空”——它指向的目标文件或目录已经被移动或删除。使用 ls -l 就能清楚看到它指向的路径。

关键点:无论目标文件是被移走还是被删除,软链接都会立刻失效,因为它仅仅是一个路径名指针,并不绑定实际数据。

硬链接与软链接的主要区别

1. 权限与归属:软链接的访问权限并不代表真实文件的权限,你也无法通过 chmod 修改软链接的属性——这些操作只能在真实文件上执行。硬链接则与原文件共享同一套权限。

2. 链接计数:软链接的链接数永远是 1,因为它本身就是一个独立文件;硬链接的链接数会随着你创建更多硬链接而增加。

3. 文件大小:用 ls -l 查看软链接,列出的大小是它自身包含的路径字符串长度,而不是目标文件的大小。硬链接的大小则与原文件完全一致。

4. 修改时间:软链接的 mtime 记录的是链接自身被修改的时间,而非目标文件的修改时间。硬链接则反映原始数据的变化。

5. 文件名显示ls -l 输出中,软链接会在文件名后显示 -> 和指向的目标路径,例如 a -> /etc/rc.conf

6. 删除行为:删除软链接指向的原始文件后,该文件的数据块会被释放(假设没有其他硬链接),软链接变成空链接。而如果你直接删除软链接本身,原始文件毫发无伤。硬链接则不同:删除任何一个硬链接,只要还有别的硬链接存在,数据就依然保留。

7. i-node 占用:硬链接不占用额外的 i-node,因为它共享原始文件的 i-node;软链接则会消耗一个新的 i-node。这一点在存储大量小文件时尤其值得注意——如果 i-node 被耗尽,即使硬盘还有剩余空间,也无法创建新文件。

总结一下选择策略:如果原始文件和目标文件位于同一个文件系统内,推荐使用硬链接——它能保留原始文件的完整信息,并且即使删除或移动原文件,链接依然有效。但若需要链接目录或跨越不同文件系统,则只能使用软链接。

来源:https://www.jb51.net/os/Unix/220843.html
上一篇Unix系统用户账户的创建、删除与管理方法详解 下一篇开源Unix系统SunOS 4.1.1上手体验
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
微软详解Win11时间点还原 默认每24小时创建恢复点
系统平台 · 2026-06-30

微软详解Win11时间点还原 默认每24小时创建恢复点

微软今日推送了最新的 6 月可选更新,并发布博客详细解读了 Win11 全新的“时间点还原”(Point-in-time restore)功能——这一功能本质上是对系统恢复体验的一次全面升级,旨在让用户更轻松地应对电脑故障。 微软表示,面向 Windows 11 客户端用户的“时间点还原”功能现已正

Win11 26H1六月可选更新KB5095091 优化放大镜改善装机体验
系统平台 · 2026-06-30

Win11 26H1六月可选更新KB5095091 优化放大镜改善装机体验

微软今天推送了Windows 11 26H1设备的6月可选更新KB5095091,安装完成后系统版本号会升级到Build 28000 2340。值得一提的是,这次更新并非面向所有设备,而是专门为搭载高通骁龙X2系列芯片的机型准备的——包括骁龙X2 Plus、X2 Elite和X2 Elite Ext

Win11六月可选更新KB5095093修复回收站弹窗异常
系统平台 · 2026-06-30

Win11六月可选更新KB5095093修复回收站弹窗异常

微软已悄然推送Windows 11六月可选更新,编号KB5095093。本次更新覆盖两个版本:24H2用户安装后版本号升级至Build 26100 8737,而25H2用户则更新至Build 26200 8737。 本次更新并非仅是小修小补,而是带来了多项实质性新功能。下面我们就来详细解析这些更新内

苹果macOS 27 Beta2封堵Siri AI跳过候补名单漏洞
系统平台 · 2026-06-30

苹果macOS 27 Beta2封堵Siri AI跳过候补名单漏洞

科技媒体 Cult of Mac 昨日(6月23日)发布博文指出,苹果在 macOS 27 Beta 2 更新中悄然封堵了一个此前可用的后门——用户曾能通过一条终端命令绕过候补名单,直接启用新版 Siri AI,如今这一方法已失效。 简要回顾一下:在 macOS 27 Beta 1 阶段,只需在 M

微软加速Win11 25H2推送 覆盖所有符合条件家用PC
系统平台 · 2026-06-30

微软加速Win11 25H2推送 覆盖所有符合条件家用PC

近日(6月23日),科技媒体 Windows Latest 发布了一则值得关注的动态:微软已进一步扩大 Windows 11 25H2 的推送范围,所有满足硬件要求、且不受 IT 部门管理的家庭版和专业版设备,现在均可顺利接收本次更新。 此次升级有一个显著特点——采用“启用包”(eKB)方式进行推送