【Linux】详解软硬链接

一、软硬链接的建立方法

1.1软链接的建立

假设在当前目录下有一个test.txt文件,要对其建立软链接,做法如下:

ln就是link的意思,-s表示软链接,test.txt要建立软链接的文件名,后面跟上要建立的软链接文件名

其中我们可以发现,建立出来的这个软链接文件是一个独立的文件,因为我们可以你看到它有自己独立的inode编号。

1.2、硬链接的建立

假设在当前目录下有一个hello.txt文件,要对其建立软链接,做法如下:

二、软硬链接的理解

2.1硬链接的理解

其中我们发现,hello.hard文件并不是一个独立的文件,因为其没有自己独立的inode编号。硬链接更像是为一个文件取了一个别名。两个文件的inode编号一样,证明它们其实就是同一个文件。 硬链接是建立了一个新的文件名和inode编号的映射关系,并将这组映射关系写入到所在目录的数据块中

硬链接数

其中,在上面这个图中的第三列的这个数字,我们叫做硬链接数。我们可以看到,当我们对一个文件建立软链接时,这个文件的硬链接数是不会发生改变的;当我们对一个文件建立一个硬链接时,其硬链接数会加一, 这个硬链接数本质上就是一个文件的inode编号和它的文件名有多少组映射关系**。 所以在描述磁盘级文件的inode结构体中,一定存在一个引用计数,保存了这个文件的inode编号和它的文件名的映射关系的组数,也就是硬链接数。**

所以文件在做删除的时候,是会把inode结构体中的引用计数减一的,当引用计数减到0时,在inodebitmap和blockbitmap中将对应的比特位由一置零,这个文件才会真的被删除。

当我们创建一个目录时,这个目录的硬链接默认就是2,因为这个目录默认就会有.这个文件名和我们给它的文件名。

Linux系统下不允许用户对一个目录建立硬链接**。因为会形成环路问题。**

2.2、软链接的理解

软链接文件的内容保存的就是所指向文件的路径。软链接就类似于Windows下的快捷方式。

相关推荐
phltxy4 小时前
LangChain从模型输出到RAG数据管道实战
服务器·人工智能·深度学习·语言模型·langchain
我星期八休息4 小时前
网络编程—应用层HTTP协议
linux·运维·开发语言·前端·网络·网络协议·http
一个天蝎座 白勺 程序猿5 小时前
从电网改造踩坑说起:深度拆解时序大模型TimechoAI的自主可控与安全合规底气
大数据·运维·服务器·大模型·timechoai
ShineWinsu5 小时前
对于Linux:UDPsocket编程基础的解析
linux·运维·网络协议·udp·ip·端口号·进程间通信
hehelm6 小时前
AI大模型接入SDK—通用模块设计
linux·开发语言·c++
Spider Cat 蜘蛛猫7 小时前
Anthropic的skill-creator使用分享
运维·服务器
liulilittle7 小时前
论分布式系统的半开闭问题
服务器·网络·分布式·系统架构·竞态
cyforkk8 小时前
Vercel 绑定自定义域名极简配置指南
服务器·前端·网络
Ai拆代码的曹操8 小时前
K8s Pod Pending 逐层排查:从 FailedScheduling 到 PVC StorageClass 不存在的实战记录
java·linux·kubernetes
Yang96119 小时前
探索无线新视界:鼎讯信通DXMP系列频谱仪模块深度剖析
运维·网络