【文件系统】-4-软硬连接

软硬连接

1、 软连接

1.1、创建方法




bash 复制代码
ln -s test.exe link-test.exe






1.2、深入理解

观察test.exe与建立的软链接文件的属性细节:







我们发现,link-test.exe的inode number与test.exe不一样,说明他们是两个不同的文件。

作为一个独立的文件,软链接link-test.exe的内容存储的是test.exe的路径,那么访问软链接link-test.exe就能访问到test.exe本身。

1.3、使用价值

软链接存储的是目标文件的路径,即软链接可以当作windows下的快捷方式来使用。

软链接还有一个价值:

  • 用软链接文件链接一个库文件。未来这个库文件需要更新的时候,我们只需换上新的库文件,然后设置库文件新的软链接方式,但是软链接的文件名不变。这样一来,就算更新了库文件,我们也不需要跟着修改与库文件名相关的配置文件。

2、硬链接

2.1、创建方式

相比软链接,硬链接的创建只需去掉-s选项:




bash 复制代码
ln test.exe link-test.exe






2.2、深入理解

硬链接文件,与test.exe的inode number是一样的。也就是说,它们是同一个文件。

图中,"文件权限"与"拥有者"之间的数字,由"1"变为了"2"。这个数字就是硬链接数,表示一共有多少个文件名映射到同一个文件本身,相当于我们之前在C++的智能指针中学习的"引用计数"。

我们也可以理解为,link-test.exe是文件test.exe的"别名"。

如果硬链接数大于1时,删除文件只会让引用计数减一;只有当硬链接数等于1时,再删除文件就真的把所有数据都删除了。

2.3、使用价值

硬链接的使用价值之一,就是通过"引用计数"的方式,备份文件,藏到系统中的一个隐蔽的地方,而不需要真的拷贝文件。

我们也可以看一个有意思的实验。

创建目录,执行ll -i,我们可以看到文件.的硬链接数为2,这是因为该目录有本来的名字,和.:







再创建一个目录,该目录的硬链接数就变为了3,这是因为新创建的目录中,..对应的文件也是该目录,即该目录此时有了三个名字:







这三个名字,体现了硬链接的实际应用。

3、硬链接的限制

Linux中,目录文件可以进行软链接,但不可以进行硬链接。







软链接文件,是独立于目标文件的另外一个文件,当然inode number也不一样,对目录进行软链接没有问题。

硬链接文件的文件名,与目标文件的文件名,共同指向同一个文件inode number。当OS或者用户想要遍历整个目录的时候,遍历到硬链接文件的时候,又返回到目标文件处重新遍历。这就会导致整个目录中的"环型遍历",相当于陷入了死循环。

所以,Linux开发者制定了规定,不允许用户使用硬链接连接目录文件。

当然,目录文件中的. ..使用了硬链接技术连接目录文件,这是为了实现"当前目录"和"上级目录"这两个概念。未来开发过程中若涉及遍历目录的操作,开发者之间应共同约定 ,绕过. ..这两个文件。

相关推荐
AR-26710-14 小时前
Linux Day33——定时任务+lvm
linux·运维
墨痕诉清风14 小时前
SSRF漏洞实战记录+OSS桶命令执行+MCP漏洞
linux·服务器·数据库
byte轻骑兵14 小时前
实战 4:BlueZ 源码中添加自定义设备过滤规则
linux·物联网·bluez·电脑蓝牙·嵌入式蓝牙
瓦瓦gogo15 小时前
从一个 TypeScript 函数开始理解 MCP 协议
linux·ubuntu·typescript
鱼听禅17 小时前
Ubuntu安装YOLOv8进行菌落识别训练
linux·python·yolo·ubuntu
测试界的小码农17 小时前
【Linux 命令实战(04):文件内容查看,掌握 cat、less、head、tail】
linux·服务器·less
CodeYp201918 小时前
第13讲:HTTPS 协议原理
linux·https
一条破秋裤18 小时前
【1112】Linux中断【整理】
linux·运维·服务器
CodeYp201920 小时前
第14讲:传输层协议 UDP
linux·udp
北京迅为20 小时前
案例分享 | RK182X算力卡:多路视频VLM监控,四路画面AI同时看懂,一句人话说清现场
linux·人工智能·嵌入式·rk3588·算力卡·rk182x