厚基础Linux——硬链接和软链接

Linux文件系统

要理解Linux文件系统上特有的特性,我们需要简单介绍一下Linux文件系统的结构。

超级区块(superblock)

它存储了一个文件系统的整体信息,包括inode/block的总量,使用量,剩余量以及文件系统格式与相关信息。
我们可以使用df -i 目录名称,来查看这个目录所在的文件系统的superblock中的部分信息
superblock
可以看到分区/dev/sda2挂载在根目录(/)下inode共有52428800,使用了131932,剩余52296868个。

inode和block

inode记录文件系统元数据,block存储文件的实际内容。不同于windows文件系统的链表式查找数据,Linux先读取inode信息,获取所有指向block的指针。inode和block的关系见下图,左边是inode,右边的部分的数据块就是block。
在这里插入图片描述

硬链接原理

硬链接本质上是多个文件名指向同一个inode。即不对inode,block作任何更改,仅在目录上增加了另一个文件名,指向了同一个inode。所以本质上,两个指针互为孪生。也就是说,任何一个硬链接文件都可以脱离其它硬链接文件,单独提供使用。

使用ln命令创建硬链接,通过ll -i命令,可以看到两个文件类型都是普通文件,只是指向该文件的硬链接数量变为2个,这两个硬链接都指向同一个inode,67。
硬链接

软链接原理

软链接,又叫符号链接。本质上是在当前目录创建了一个链接文件,这个文件有独立的inode,独立的block,只是该文件类型为l,文件内容为源文件的文件路径。所以本质上,访问软链接,是通过软链接读取了源文件的路径后,再去访问源文件。也就是说,源文件删除,则软链接不可用;软链接删除,则源文件不受影响。

使用ln -s 命令创建软链接,可以看到文件类型,inode号都与源文件不同。
在这里插入图片描述
删除源文件f1后,硬链接能正常访问,软链接已经失效。
删除

硬链接、软链接特性对比

下面对硬链接和软链接的特征制作一张清单

序号特性硬链接软链接
1本质和源文件是同一个和源文件是不同的文件
2是否可以跨分区链接
3是否可以指向目录
4链接和源文件关系可以互相替代源文件删除即失效,重新创建源文件,内容不同,链接也有效
5inode号和源文件相同和源文件不同
6链接数会增加链接数不会影响链接数
7相对路径使用相对路径创建时,以执行命令的目录作为相对起点使用相对路径创建时,以链接文件路径的作为相对起点。

1,4,5,6在前文都已经示例中已经演示。下面将对2,3,7进行单独演示。

跨分区链接

/,/data属于不同的分区。
在这里插入图片描述
在/root下创建文件,f1,尝试在/data目录下创建链接文件链接f1。
跨分区创建
可以看到硬链接创建会直接失败,软链接可以正常使用。

链接目录

在/data下创建目录d1,尝试在/data目录下创建链接文件链接d1.
创建目录链接
可以看到硬链接创建会直接失败。软链接可以正常链接。

相对路径

在/data目录下创建f1文件,/data/beta/目录下创建f1文件,使用软硬链接命令在/data目录下创建link文件,link文件的存放位置在/data/beta目录下,验证此时的链接文件访问的文件是哪个f1文件。
创建两个f1
在/data目录下执行创建命令,可以看到硬链接指向了执行命令的当前目录,软链接指向了软链接本身的的相对目录。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值