Linux(inode + 软硬链接 图片+大白话)

 后面也会持续更新,学到新东西会在其中补充。

建议按顺序食用,欢迎批评或者交流!

缺什么东西欢迎评论!我都会及时修改的!

在这里真的很感谢这位老师的教学视频让迷茫的我找到了很好的学习视频

王晓春老师的个人空间-王晓春老师个人主页-哔哩哔哩视频

inode 表结构

先上一张图

粗略的理解一个硬盘的分区由两部分组成

inode 表记录以下信息 
inode number 节点号 节点编号是个数据 类似于身份证号 每个文件都有与众不同的标识
文件类型
权限
UID
GID
链接数
该文件的大小不同的时间戳
指向磁盘上文件的数据块指针
有关文件的其他数据

文件越大速度会被受到影响 需要简接间接查找

找一个文件的流程

目录 

目录是一个特殊文件,目录文件的内存保存了此目录中文件的列表(文件名)inode number 对应关系

inode table里面不放文件名 文件名是放到目录中的

dentry

dentry中包含了文件名和对应的inode number。

这样就可以通过inode number找到inode table其对应的inode

创建文件

查看文件

cp和inode

 rm和inode

只删除inode 相关信息 没有删除数据

所以数据恢复是有可能的

but 如果新创建了一个文件会使用free空间

覆盖之前写过的数据

inode number的复用

mv和inode

相当于 cp + rm

不同分区 inode number改变了 同一分区 inode number不改变

为什么?因为文件存放的位置在不同分区 数据块的位置也不同!同一分区的数据块不会改动

 inode number到底有多少个呢?

每一个分区可以看成一个国家

若两个分区的节点编号一样是一个文件吗?中国人身份证号是123美国人的身份证号也是123那么他们是同一个人吗

查看每个分区的inode number使用率

inode number不够使用现状(面试)

提示空间快满了但df 和 df -i都可以看到空间很多为什么?(面试)

删除大文件空间不会立即释放

 

yum -y install lsof
lsof | grep delete

因为正在使用的文件 不会被释放

我们可以直接kill 程序来释放 但是程序不可以随意kill 

 大文件变小文件

cat /dev/null > /test/bigfile

总结

删除一个文件相当于回收了身份证号 

软链接和硬链接

硬链接(hard)

不同文件可以使用相同编号不同分区下

在同一分区是不能不同文件可以使用相同编号

同一个文件不能有多个节点编号

一个文件可以有多个文件名 用硬链接实现 创建硬链接实际上就是给一个文件起多个名字

链接数相当于告诉文件有几个名字

ln f1.txt f1.txt.bak

修改f1.txt文件查看f1.txt.bak变化

在磁盘中占的空间是多少呢

还是6字节 只是名字多了 节点表里面只有一条33594575 

目录里面显示只是文件名不同inode号是一样的

删除源文件f1.txt其他文件会被影响吗

 相当于就是少了个名字

硬链接不能跨分区

因为此分区的inode号,不能指向其他分区的数据块。

 若不同分区的inode号一样也应该是不同文件不应该是相同文件

更简单的理解是分区是国家 你的身份号放到国外能用吗?当然不能对吧

 文件夹不能创建硬链接

 运行中数据库删除其中一个大表

在半夜的时候再把这个硬链接出来的文件给删除了

为什么目录链接数为2

.是dir1的另一个名字

 链接数可以变成三吗

软连接(符号链接)soft

软链接,快捷方式的创建,可以快捷的指向另一个文件的特殊文件

-s参数,创建符号连接,软连接,快捷方式

ln -s 源文件路径 快捷方式绝对路径

链接文件有标志l 大小为6字节(指向路径大小f1.txt刚好6个字节) 颜色为蓝色 链接数不增加,节点编号也不同,说软链接和原始文件根本不是同一个文件,是两个文件相当于起了一个绰号。

 删除快捷方式不影响源文件,但是把源删除会影响快捷方式

 链接路径写相对路径

 相对路径是相对当前工作目录的路径,特殊场景下,是相对于某目录的位置

f1.txt.link 认为 f1.txt和f1.txt.link在同一个目录里面

那么怎么做呢 我们要写的是dir1/f1.txt.link相对路径

 咳咳若是太麻烦那就写绝对路径

 软连接创建文件夹

 假如mysql要升级

Mysql5.7升级Mysql8.0_mysql5.7升级到8 升级驱动-CSDN博客

要命的小细节/

删除原本链接文件没问题

但是删除mysql/相当于把文件夹里面东西全部删除了离谱!

 假如你手快!就会出现 再回车直接完蛋!

 确定你在干什么再敲回车很重要!

 readlink

 使用readlink 查看软链接文件本身的内容,也就是目标文件的路径

软硬区别

参考文献

4inode表的结构和文件管理底层原理和生产案例_哔哩哔哩_bilibili

5硬链接和软件文件的实现和生产案例_哔哩哔哩_bilibili

路飞学城 - 帮助有志向的年轻人通过努力学习获得体面工作

总结

本人基本上是个人理解加参考其他大佬的肯定有很多问题欢迎指正,我会及时修改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/464338.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python在word的页脚插入页码

1、插入简易页码 import win32com.client as win32 from win32com.client import constants import osdoc_app win32.gencache.EnsureDispatch(Word.Application)#打开word应用程序 doc_app.Visible Truedoc doc_app.Documents.Add() footer doc.Sections(1).Footers(cons…

Echarts环形图引线设置

直接上图吧 直接上代码吧 let labelArr [直接访问, 邮件营销, 联盟广告, 视频广告, 搜索引擎]; let valueArr [{ value: 335, name: 直接访问 },{ value: 310, name: 邮件营销 },{ value: 234, name: 联盟广告 },{ value: 135, name: 视频广告 },{ value: 154, name: 搜索引…

学习虚幻C++开发日志——定时器

官方文档:虚幻引擎中的Gameplay定时器 | 虚幻引擎 5.5 文档 | Epic Developer Community | Epic Developer Community 定时器 安排在经过一定延迟或一段时间结束后要执行的操作。例如,您可能希望玩家在获取某个能力提升道具后变得无懈可击,…

vue+django+neo4j航班智能问答知识图谱可视化系统

🔞 友友们,有需要找我,懂的都懂 🩵 基于NLP技术知识图谱的航班知识智能问答 🩵 技术架构:vue django mysql neo4j 🩵 数据:航班数据7万多条 🩵 vue知识图谱的模糊查询…

「Mac畅玩鸿蒙与硬件15」鸿蒙UI组件篇5 - Slider 和 Progress 组件

Slider 和 Progress 是鸿蒙系统中的常用 UI 组件。Slider 控制数值输入,如音量调节;Progress 显示任务的完成状态,如下载进度。本文通过代码示例展示如何使用这些组件,并涵盖 进度条类型介绍、节流优化、状态同步 和 定时器动态更…

前端Election

一.什么是Election 1.一款应用广泛的跨平台和桌面应用开发框架。 2.本质 Election的本质是结合了Chromium与Node.js 3.构建 使用HTML ,CSS,JS等Web技术构建桌面应用程序。 只要最后能转换成html css js即可 二.流程模型 1.主进程 关于node.js的任何api都在这里调用 一个纯…

(七)JavaWeb后端开发——Maven

目录 1.Maven概述 2.Maven依赖管理 2.1依赖配置 2.2依赖传递 2.3依赖范围 2.4生命周期 1.Maven概述 maven是一款管理和构建java项目的工具 Maven的作用: 依赖管理:方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题统一项目结构…

运维工具之docker入门

1.容器与docker 1.什么是容器? 容器是一种轻量级的,可移植的软件运行环境。它将软件程序本身及软件依赖库打包在一起。可以在不同平台和系统上运行。 2.什么是LXC LXC就是Linux container,。LXC是一种虚拟化技术,可以在操作系统层级上为应…

【设计模式系列】组合模式(十二)

目录 一、什么是组合模式 二、组合模式的角色 三、组合模式的典型应用 四、组合模式在Mybatis SqlNode中的应用 4.1 XML映射文件案例 4.2 Java代码使用案例 一、什么是组合模式 组合模式(Composite Pattern)是一种结构型设计模式,其核…

FFmpeg 4.3 音视频-多路H265监控录放C++开发十二:在屏幕上显示多路视频播放,可以有不同的分辨率,格式和帧率。

上图是在安防领域的要求,一般都是一个屏幕上有显示多个摄像头捕捉到的画面,这一节,我们是从文件中读取多个文件,显示在屏幕上。

Linux下Java的多种方式安装

Linux下Java的多种方式安装 博客: www.lstar.icu 开源地址 Gitee 地址: https://gitee.com/lxwise/iris-blog_parent Github 地址: https://github.com/lxwise/iris-blog_parent 序言 Java是一门面向对象的编程语言,不仅吸收了…

鸿蒙进阶-AlphabetIndexer组件

大家好,这里是鸿蒙开天组,今天我们来学习AlphabetIndexer组件,喜欢就点点关注吧! 通过 AlphabetIndexer 组件可以与容器组件结合,实现导航联动,以及快速定位的效果 核心用法 AlphabetIndexer不是容器组件…

WordPress之generatepress主题安装

1.打开主题列表 2.如果没有自己需要主题点击安装新主题 点击安装并启用 3.不喜欢的 主题可以点击主题进去删除 4.主题自定义编辑 打开自定义,可以修改布局,颜色,排版等等

我们来学mysql -- 同时使用 AND 和 OR 查询错误(填坑篇)

AND 和 OR 一同使用问题 现象分析处理扩展 现象 业务上在“锁定”当前零件所在出口国的所有零件时,出现其他国家零件 问题定位 分析 or 切断了操作符之间的连续性,从union角度分析 where k1 Td621 and k1 Vda96 or k3 P00009等同 select * fr…

CloudCompare——基于连通性的点云分类【2024最新版】

目录 1.实现原理2.找到连通性分类功能3.设置计算参数4.分类结果5.完整操作流程 1.实现原理 见:http://en.wikipedia.org/wiki/Connected-component_labeling。 2.找到连通性分类功能 “Tools > Segmentation > Label Connected Comp”菜单进行打开 3.设置…

Axure大屏可视化模板:赋能各行各业的数据展示与管理

如何高效、直观地展示和分析数据,成为企业和机构面临的重要挑战。Axure大屏可视化模板作为一种先进的数据展示工具,凭借其强大的交互性和直观性,在多个领域内得到了广泛应用。从农业生产的智能化管理到城市发展的精细化管理,再到企…

模型 海勒姆法则(用户依赖你未承诺的API功能)

系列文章 分享 模型,了解更多👉 模型_思维模型目录。用户总会以你意想不到的方式使用你的产品。 1 海勒姆法则的应用 1.1 社交网络平台API的变更 一个流行的社交网络平台“Socialville”拥有数百万用户,它提供了一个API,允许开发…

Rust 力扣 - 1423. 可获得的最大点数

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 题目所求结果存在下述等式 可获得的最大点数 所有卡牌的点数之和 - 长度为(卡牌数量 - k)的窗口的点数之和的最小值 我们遍历长度为(卡牌数量 - k)的窗口&#…

如何对LabVIEW软件进行性能评估?

对LabVIEW软件进行性能评估,可以从以下几个方面着手,通过定量与定性分析,全面了解软件在实际应用中的表现。这些评估方法适用于确保LabVIEW程序的运行效率、稳定性和可维护性。 一、响应时间和执行效率 时间戳测量:使用LabVIEW的时…

「Mac畅玩鸿蒙与硬件28」UI互动应用篇5 - 滑动选择器实现

本篇将带你实现一个滑动选择器应用,用户可以通过滑动条选择不同的数值,并实时查看选定的值和提示。这是一个学习如何使用 Slider 组件、状态管理和动态文本更新的良好实践。 关键词 UI互动应用Slider 组件状态管理动态数值更新用户交互 一、功能说明 在…