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

news2024/11/6 3:14:38

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

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

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

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

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

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.coloradmin.cn/o/2234014.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CM API方式设置YARN队列资源

简述 对于CDH版本我们可以参考Fayson的文章,本次是CDP7.1.7 CM7.4.4 ,下面只演示一个设置队列容量百分比的示例,其他请参考cloudera官网。 获取cookies文件 生成cookies.txt文件 curl -i -k -v -c cookies.txt -u admin:admin http://192.168.242.100:7180/api/v44/clusters …

【Linux】简易版shell

文章目录 shell的基本框架PrintCommandLineGetCommandLineParseCommandLineExecuteCommandInitEnvCheckAndExecBuildCommand代码总览运行效果总结 shell的基本框架 要写一个命令行我们首先要写出基本框架。 打印命令行获取用户输入的命令分析命令执行命令 基本框架的代码&am…

基于MySQL的企业专利数据高效查询与统计实现

背景 在进行产业链/产业评估工作时,我们需要对企业的专利进行评估,其中一个重要指标是统计企业每一年的专利数量。本文基于MySQL数据库,通过公司名称查询该公司每年的专利数,实现了高效的专利数据统计。 流程 项目流程概述如下&…

盘点 2024 十大免费/开源 WAF

WAF 是 Web Application Firewall 的缩写,也被称为 Web 应用防火墙。区别于传统防火墙,WAF 工作在应用层,对基于 HTTP/HTTPS 协议的 Web 系统有着更好的防护效果,使其免于受到黑客的攻击。 近几年经济增速开始放缓,科…

鸿蒙进阶-AlphabetIndexer组件

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

【Unity】【游戏开发】Sprite背景闪烁怎么解决

【现象】 VR游戏中,给作为屏幕的3D板子加上Canvas后再加背景image,运行时总是发现image闪烁不定。 【分析】 两个带颜色的object在空间上完全重合时也遇到过这样的问题,所以推测是Canvas的image背景图与木板的面重合导致。 【解决方法】 …

sublime Text中设置编码为GBK

要在sublime Text中设置编码为GBK,请按照以下步骤操作 1.打开Sublime Text编辑器, 2.点击菜单栏中的“Preferences”(首选项)选项,找打Package Control选项。 3.点击Package Control,随后搜索Install Package并点击,如下图 4.再…

队列与栈的代码对比(Java)

目录 链表实现队列 数组实现队列 链表实现栈 数组实现栈 图片: 链表实现队列 package Queue;import java.util.Iterator;public class LinkedListQueue <E> implements Queue<E>, Iterable<E>{//单向环形哨兵链表//节点类private static class Node<…

一些常规IP核功能

一,util_vector_logic util_vector_logic 主要支持以下类型的逻辑操作: 逻辑与(AND): 当所有输入都为1时,输出为1,否则为0。逻辑或(OR): 当任意输入为1时,输出为1,否则为0。逻辑非(NOT): 当输入为1时,输出为0;输入为0时,输出为1。异或(XOR): 当输入中有奇…

Docker篇(Docker安装)

目录 一、Centos7.x 1. yum 包更新到最新 2. 安装需要的软件包 3. 设置 yum 源为阿里云 4. 安装docker 5. 安装后查看docker版本 6. 设置ustc镜像源 二、CentOS安装Docker 前言 1. 卸载&#xff08;可选&#xff09; 2. 安装docker 3. 启动docker 4. 配置镜像加速 …

【c++ gtest】使用谷歌提供的gtest和抖音豆包提供的AI大模型来对代码中的函数进行测试

【c gtest】使用谷歌提供的gtest和抖音豆包提供的AI大模型来对代码中的函数进行测试 下载谷歌提供的c测试库在VsCode中安装抖音AI大模型找到c项目文件夹&#xff0c;使用VsCode和VS进行双开生成gtest代码进行c单例测试 下载谷歌提供的c测试库 在谷歌浏览器搜索github gtest, 第…

google adsense广告费中国收款结算被银行拒解决办法

多年前搞了几个网站&#xff0c;挂了谷歌google adsense广告&#xff0c;不知道不觉到了100美金最低结算&#xff0c;谷歌给我打款&#xff0c;之前是绑定交银银行的。被银行镜内登陆谷歌不合法不合规给拒绝入账&#xff0c;把美金退回了&#xff0c;怎么办&#xff1f; googl…

蓝桥杯 区间移位--二分、枚举

题目 代码 #include <stdio.h> #include <string.h> #include <vector> #include <algorithm> #include <iostream> using namespace std; struct node{ int a,b; }; vector<node> q; bool cmp(node x,node y){ return x.b <…

书生第四期实训营基础岛——L1G1000书生大模型全链路开源体系

书生浦语大模型开源开放体系 书生浦语开源一周年历史 2023.7.6&#xff1a;InternLM-7B开源率先免费商用发布全链条开源工具体系2023.9.20&#xff1a;InternLM-20B开源&#xff0c;开源工具链全线升级2024.1.17&#xff1a;InternLM2开源&#xff0c;性能超最新同量级开源模…

单元测试(Junit)

系统—模块—子模块&#xff0c;子模块中不可分割的程序单元的测试&#xff0c;单元的粒度根据实际情况可能是 类或方法等。 面向对象编程中&#xff0c;最小单元就是方法。 单元测试目的是在集成测试和功能测试之前对系统可测试单元进行逐一检查和验证。 单元测试基本原则 …

MySQL表的增删改查(CRUD3约束)

这次我们开始先不复习嗷&#xff0c;等到把数据表的删除说完咱们统一&#xff0c;总结书写 1.数据表的删除&#xff1a; 语法&#xff1a; 1. 使用 DROP TABLE 语句删除单个表 基本语法&#xff1a;DROP TABLE [IF EXISTS] table_name; table_name是要删除的表的名称。IF EXIS…

go中Println和Printf的区别

Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 go中Println和Printf的区别 package mainimport ( "fmt" )//TIP To run your code, right-click the c…

【系统面试篇】进程和线程类(1)(笔记)——区别、通讯方式、同步、互斥、锁分类

目录 一、问题综述 1. 进程和线程的区别&#xff1f; 2. 进程的状态有哪些&#xff1f; 3. 进程之间的通信方式? &#xff08;1&#xff09;管道 &#xff08;2&#xff09;消息队列 &#xff08;3&#xff09;共享内存 &#xff08;4&#xff09;信号量 &#xff08…

编译安装并刷写高通智能机器人SDK

The Qualcomm Intelligent Robotics Product SDK (QIRP SDK) 高通智能机器SDK基于ROS2进行开发&#xff0c;此SDK适用于高通linux发行版本&#xff0c;QIRPSDK中提供以下内容&#xff1a; ROS 包中用于支持机器人应用程序开发的参考代码 用于评估机器人平台的端到端场景示例集…

网页版五子棋—— WebSocket 协议

目录 前言 一、背景介绍 二、原理解析 1.连接过程&#xff08;握手&#xff09; 2.报文格式 三、代码示例 1.服务端代码 &#xff08;1&#xff09;TestAPI 类 &#xff08;2&#xff09;WebSocketConfig 类 2.客户端代码 3.代码演示 结尾 前言 从本篇文章开始&am…