前言
大家好吖,欢迎来到 YY 滴Linux系列 ,热烈欢迎! 本章主要内容面向接触过C++的老铁
主要内容含:
欢迎订阅 YY滴C++专栏!更多干货持续更新!以下是传送门!
- YY的《C++》专栏
- YY的《C++11》专栏
- YY的《Linux》专栏
- YY的《数据结构》专栏
- YY的《C语言基础》专栏
- YY的《初学者易错点》专栏
- YY的《小小知识点》专栏
- YY的《单片机期末速过》专栏
- YY的《C++期末速过》专栏
- YY的《单片机》专栏
- YY的《STM32》专栏
- YY的《数据库》专栏
- YY的《数据库原理》专栏
目录
- 一.文件信息(文件名+文件元数据)介绍
- 二.文件系统与inode介绍
- 三.【软/硬链接】理解与介绍
- 1.软硬链接基本知识
- 2.软硬链接创建&删除语法
- 3.观察inode编号理解链接中的本质
- 4.一个操作理解-“硬链接是关于文件名的机制”
- 5.一个文件真正被删除——没有<文件名+映射关系(硬链接)>
一.文件信息(文件名+文件元数据)介绍
- 一个完整的文件包括: 1.文件信息 2.文件内容
ls -l
显示的是 文件信息
- 我们使用
ls -l
的时候看到的除了看到文件名,还看到了文件元数据。
[root@localhost linux]# ls -l
总用量 12
-rwxr-xr-x. 1 root root 7438 "9月 13 14:56" a.out
-rw-r--r--. 1 root root 654 "9月 13 14:56" test.c
- 分别对应含义如下图所示
二.文件系统与inode介绍
- Linux ext2文件系统,下图为 磁盘文件系统图 (内核内存映像肯定有所不同),磁盘是典型的块设备, 硬盘分区被划分为一个个的block。
每个Block分区分成许多部分,下面是这些分区的介绍,主要关注i节点表与数据区:
- Block Group: ext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相同的结构组成。政府管理各区的例子
- 超级块(Super Block): 存放文件系统本身的结构信息。记录的信息主要有:bolck 和 inode的总量,未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息。Super Block的信息被破坏,可以说整个文件系统结构就被破坏了
- GDT,Group Descriptor Table: 块组描述符,描述块组属性信息
- 块位图(Block Bitmap): Block Bitmap中记录着Data Block中哪个数据块已经被占用,哪个数据块没有被占用inode位图(inode Bitmap):每个bit表示一个inode是否空闲可用。
- i节点表(结构体): 存放文件属性 如 文件大小,所有者,最近修改时间等。为什么软连接是一个独立的文件而硬链接不是? 是因为软连接 有独立的inode编号
- 数据区(Data blocks):存放文件内容
三.【软/硬链接】理解与介绍
1.软硬链接基本知识
- 软链接: 独立的文件, 有着独立inode , 软连接的内容是目标文件路径 ,类比windows系统的快捷方式
- 硬链接: 关于文件名的机制,非独立文件,指定目录内的一组 映射 关系,inode内部有引用计数,会记录映射关系
※为什么软连接是一个独立的文件而硬链接不是? 是因为软连接 有独立的inode编号。
2.软硬链接创建&删除语法
-- 创建硬链接
ln test1 test.hard.link
-- 创建软链接(-s 即 soft)
ln -s test1 test.soft.link-- 删除链接
unlink test1 test.hard.link
3.观察inode编号理解链接中的本质
- 我们对test1创建一个软链接文件test1.soft.link
- 发现 二者inode编号不一致
- 我们对test2创建一个硬链接文件test1.hard.link
- 发现 二者inode编号一致
4.一个操作理解-“硬链接是关于文件名的机制”
- 我们删除test2的硬链接后,发现其硬链接数量由2变为1
- 那我们发现其实他的inode号并没有发生变化, 那是不是实现了文件名的修改?即重命名
- 那我们下次想要修改文件名时,也可以创建一个硬链接并删除原来的路径下的源文件
5.一个文件真正被删除——没有<文件名+映射关系(硬链接)>
- 所以我们最终得出结论:当没有<文件名+映射关系(硬链接),一个文件才算真正被删除