首页 帮助中心 Linux文件系统的软链接与硬链接的区别是什么?
Linux文件系统的软链接与硬链接的区别是什么?
时间 : 2025-05-07 16:34:32 编辑 : 华纳云 阅读量 : 106

有些文件,看似两个,实则一个;有些链接,删了原文件它仍能活着。在Linux世界,有两个术语一直让人恍惚——软链接与硬链接。它们之间究竟有什么区别?别着急,这篇文章为您答疑解惑。

一、Linux的“文件”到底是什么?

在Windows里,文件像一个一个的小图标,点击就打开;但是在Linux里,文件的概念更“抽象”。在Linux文件系统中,一个“文件”实际上有两个部分:

文件名:目录项中出现的名字,本质是一个引用。

inode(索引节点):真正的文件内容和属性存在的地方。

通俗理解:文件名是门牌号,inode才是真正的房间。

二、硬链接:房间可以有多个门

硬链接其实很简单,就是给同一个inode添加多个门牌号。

举个生活例子:

你有一间办公室(文件内容),你在两个不同走廊(目录)上分别贴了门牌号(文件名):Room-A 和 Room-B,但这两个门指向的是同一个房间。不管你从哪边进,看到的东西都是一样的。

在终端里看:

$ echo "hello" > file1.txt
$ ln file1.txt file2.txt

此时,file1.txt 和 file2.txt 是硬链接,它们指向相同的inode。

查看 inode 和链接数:

$ ls -li
123456 -rw-r--r-- 2 user user 6 Apr 7 10:00 file1.txt
123456 -rw-r--r-- 2 user user 6 Apr 7 10:00 file2.txt

可以看到,两者的 inode 编号相同,说明是硬链接。而 2 是链接计数,表示有两个名字指向这个 inode。

特点总结:

文件内容共享,一个变,两个变;

删除一个不影响另一个,只要还有链接,inode不会被释放;

不支持跨文件系统(分区);

不能对目录创建硬链接(为了防止文件系统结构混乱)。

三、软链接:门外贴个指路牌

软链接更像Windows的“快捷方式”。

生活例子:

你房间在3楼,但你在1楼贴了张纸条:“此房已搬迁至3楼305”。别人拿着这个地址(链接),需要额外“跳转”一层才能找到真实位置。

命令体验:

$ ln -s file1.txt file3.txt

这就是创建了一个指向 file1.txt 的软链接。

查看效果:

$ ls -l
-rw-r--r-- 1 user user 6 Apr 7 10:00 file1.txt
lrwxrwxrwx 1 user user 9 Apr 7 10:01 file3.txt -> file1.txt

注意:

file3.txt 是链接文件,显示为 -> file1.txt;

它的 inode 是独立的,不是共享的!

如果你把原文件删了:

$ rm file1.txt
$ cat file3.txt
cat: file3.txt: No such file or directory

软链接失效了,它只是指路牌,指向的对象不在了就没用了。

四、硬链接 vs 软链接:

是否有独立inode:硬链接没有,多个文件共享同一个inode;软连接有,自己是一个新文件,记录路径。

是否可跨文件系统:硬链接没有,软连接有

删除原文件影响:硬链接不会受影响,剩余链接仍然可访问;软链接会受影响,链接失效

是否可用于目录:硬链接不能,除非超级用户用link();软链接可以。

是否能递归链接:硬链接不能;软链接可以,甚至可以链多个路径

总之,在Linux文件中,硬链接和软连接都是令人惊艳的设计,也是高级玩法不可或缺的一部分。硬链接像克隆,同体多名;软链接像镜像,遥控指向。理解链接的本质后,你会发现一个文件,并不总是一张面孔;一条路径,也不一定直达彼岸。

华纳云 推荐文章
Autojump实现高效管理Linux文件系统导航 删除一个文件中全部硬链接的方法 Linux中创建硬链接和符号链接的一般步骤 常见的Linux文件系统工具有哪些 linux硬链接不能链接目录怎么解决 LVM怎么扩展linux文件系统磁盘大小? Linux文件系统提示Read-only file system
活动
客服咨询
7*24小时技术支持
技术支持
渠道支持