当前位置: 首页 > article >正文

【Linux】理解文件系统与软硬链接,观察inode号理解<“软链接是包含路径的新文件“,“硬链接是关于文件名的机制“>,最终明白<什么是真正删除一个文件>

前言

大家好吖,欢迎来到 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.一个文件真正被删除——没有<文件名+映射关系(硬链接)>

  • 所以我们最终得出结论:当没有<文件名+映射关系(硬链接),一个文件才算真正被删除

http://www.kler.cn/news/356303.html

相关文章:

  • 爱快路由器配置腾讯云动态域名DDNS详细说明
  • windows 10家庭版无法打开组策略的方法,亲测有效
  • Spring Cloud Alibaba 体系-组件-Sentinel
  • 电影评论系统:Spring Boot设计与实现
  • 宇宙汽车展览如何以创新性、个性化与便捷性,重塑汽车展示生态
  • 中仕公考:国考省考能一起备考吗?
  • 【博士每天一篇文献-算法】持续学习之GEM算法:Gradient Episodic Memory for Continual Learning
  • 【Python】高级特性
  • 【C++ STL 模板类】pair 键值对
  • USB转串口IC卡读写器银河麒麟操作系统认证测试报告
  • AWS Aurora 实例更换实战:最小化业务影响的升级策略
  • 韩国显卡的特点和优势体现在哪里
  • python教程:python中的元组及其对元组的操作
  • Golang | Leetcode Golang题解之第491题非递减子序列
  • 从0到1封装一个image/pdf预览组件
  • 微信开发者工具:音乐小程序报错
  • k8s中如何将pod的标准输出日志输出到一个文件
  • MySQL 安装和基本使用
  • PHP $ _FILES [‘userfile‘] [‘name‘ ] 和 $ _FILES [‘userfile‘] [‘tmp_name‘] 有什么区别
  • 大数据之hadoop(hdfs部分)