Linux---文件系统和日志分析
文章目录
- 文件系统和日志分析
- inode和block概述
- inode包含文件的元信息
- 用stat命令可以查看某个文件的inode信息
- Linux系统文件三个主要的时间属性
- 目录文件的结构
- 用户通过文件名打开文件时,系统内部的过程
- 查看inode号码的方法
- 硬盘分区后的结构
- 访问文件的简单流程
- inode的大小
- 由于inode号码与文件名分离,导致一些Unix/Linux系统具有以下的现象
- 链接文件
- 恢复XFS类型的文件
- ---xfsdump(文件系统)
- 具体操作
- 实操
- 一、使用fdisk创建分区/dev/sdb1,格式化xfs文件系统并挂载
- 二、创建模拟文件
- 三、安装依赖包
- 四、使用 xfsdump 命令备份整个分区
- 五、模拟数据丢失
- 六、使用 xfsrestore 命令恢复文件
- 七、查看
- 八、完成
- 恢复EXT类型的文件
- ---extundelete(文件系统)
- 实操
- 一、使用fdisk创建分区/dev/sdc1,格式化ext3文件系统并挂载
- 二、安装依赖包
- 三、编译安装extundelete
- 四、打包
- 五、安装程序
- 六、创建软链接
- 七、模拟删除并查看
- 八、恢复/dev/sdc1文件系统下的所有内容
- 九、查看
- 十、完成
- 日志的功能
- 日志文件的分类
- 日志保存位置
- 主要日志文件介绍
- 日志大类
- 日志消息级别
- 保存了用户登录、退出系统等相关信息
- 分析工具
- 由相应的应用程序独立进行管理
- 日志管理策略
文件系统和日志分析
inode和block概述
- 文件数据包括元信息与实际数据
- 文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节
- block(块)—数据
连续的八个扇区组成一个 block(4K)
是文件存取的最小单位
- inode(索引节点)—元信息
中文译名为“索引节点”,也叫i节点
用于存储文件元信息
一个文件必须占用一个inode,但至少占用一个block
inode包含文件的元信息
- 文件的字节数
- 文件拥有者的User ID #不包含文件名
- 文件的Group ID
- 文件的读、写、执行权限
- 文件的时间戳
用stat命令可以查看某个文件的inode信息
示例:stat aa.txt
Linux系统文件三个主要的时间属性
-
ectime(change time)
最后一次改变文件或目录(属性)的时间
-
atime(access time)
最后一次访问文件或目录的时间
-
mtime(modify time)
最后一次修改文件或目录(内容)的时间
目录文件的结构
-
目录也是一种文件
-
目录文件的结构
-
每个inode都有一个号码,操作系统用inode号码来识别不同的文件
-
Linux系统内部不使用文件名,而使用inode号码来识别文件
-
对于用户,文件名只是inode号码便于识别的别称
用户通过文件名打开文件时,系统内部的过程
- vi 1.txt——》shell翻译——》系统
- 系统找到这个文件名对应的inode号码
- 通过inode号码,获取inode信息
- 根据inode信息,找到文件数据所在的block,读出数据
查看inode号码的方法
ls -i命令:查看文件名对应的inode号码
Is -i aa.txtstat命令:查看文件inode信息中的inode号码
stat aa.txt
硬盘分区后的结构

访问文件的简单流程

inode的大小
-
inode也会消耗硬盘空间
每个inode的大小一般是128字节或256字节
-
格式化文件系统时确定inode的总数
-
使用df -i命令可以查看每个硬盘分区的inode总数和已经使用的数量
由于inode号码与文件名分离,导致一些Unix/Linux系统具有以下的现象
- 当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件
- 移动或重命名文件时,只改变文件名,不影响inode号码
- 打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名
链接文件
- 为文件或目录建立链接文件
- 链接文件分类
| 软链接(符号链接) | 硬链接 | |
|---|---|---|
| 删除原始文件后 | 失效 | 仍旧可用 |
| 使用范围 | 适用于文件或目录 | 只可用于文件 |
| 保存位置 | 与原始文件可以位于不同的文件系统中 | 必须与原始文件在同一个文件系统(如一个Linux分区)内 |
-
完全备份
从上次完全备份到当前的内容全部进行备份
-
增量备份
从上一次完全备份或者最近一次增量备份为开始只备份增减的内容
-
差异备份
通常是只从上一次完全备份开始到当前备份时间内的所有差异的部门
>覆盖>>注入
恢复XFS类型的文件
—xfsdump(文件系统)
xfsdump 命令常用的选项:
-f:指定备份文件目录
-L:指定标签 session label
-M:指定设备标签 media label
-s:备份单个文件,-s后面不能直接跟路径xfsdump使用限制:
1.只能备份已挂载的文件系统
2.必须使用root的权限才能操作
3.只能备份XFS文件系统
4.备份后的数据只能让xfsrestore解析5.不能备份两个具有相同UUID的文件系统(可用 blkid命令查看)
具体操作
添加一块硬盘
#使用fdisk创建分区/dev/sdb1,格式化xfs文件系统
fdisk /dev/sdb
partprobe /dev/sdb
mkfs.xfs /dev/sdb1
mkdir /data
mount /dev/sdb1 /date/cd /data
cp /etc/passwd ./
mkdir test
touch test/a#安装依赖包
rpm -qa | grep xfsdump
yum install -y xfsdump#使用 xfsdump 命令备份整个分区
xfsdump -f /opt/dump_sdb1 /dev/sdb1 -L dump_sdb1 -M sdb1#模拟数据丢失
cd /data/
rm -rf ./*
ls#使用 xfsrestore 命令恢复文件
xfsrestore -f /opt/dump_sdb1 /data/
实操
一、使用fdisk创建分区/dev/sdb1,格式化xfs文件系统并挂载
fdisk /dev/sdb
partprobe /dev/sdb
mkfs.xfs /dev/sdb1
mkdir /data
mount /dev/sdb1 /date/


二、创建模拟文件
cd /data
cp /etc/passwd ./
mkdir test
touch test/a

三、安装依赖包
yum install -y xfsdump
rpm -qa | grep xfsdump

四、使用 xfsdump 命令备份整个分区
xfsdump -f /opt/dump_sdb1 /dev/sdb1 -L dump_sdb1 -M sdb1

五、模拟数据丢失
cd /data/
rm -rf ./*
ls

六、使用 xfsrestore 命令恢复文件
xfsrestore -f /opt/dump_sdb1 /data/

七、查看
ls

八、完成
恢复EXT类型的文件
—extundelete(文件系统)
添加一块硬盘
#使用fdisk创建分区/dev/sdc1,格式化ext3文件系统
fdisk /dev/sdc
mkfs.ext3 /dev/sdc1
mkdir /test
mount /dev/sdc1 /test/
df -hT#安装其他依赖包
yum install -y bzip2 gcc* pcre* wget*
#安装依赖包
yum -y install e2fsprogs-devel e2fsprogs-libs#编译安装 extundelete
cd /test
wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
tar jxvf extundelete-0.2.4.tar.bz2
cd extundelete-0.2.4/
./configure --prefix=/usr/local/extundelete && make && make install
ln -s /usr/local/extundelete/bin/* /usr/bin/#模拟删除
cd /test
echo a>a
echo a>b
echo a>c
echo a>d
ls
rm -rf a b
extundelete /dev/sdc1 --inode2 #查看文件系统/dev/sdc1下存在哪些文件,i节点是从2开始的,2代表该文件系统最开始的目录#执行恢复操作
cd ~
umount /test
extundelete /dev/sdc1 --restore-all #恢复/dev/sdc1文件系统下的所有内容#在当前目录下会出现一个RECOVERED_FILES/目录,里面保存了已经恢复的文件
ls RECOVERED_FILES/
实操
一、使用fdisk创建分区/dev/sdc1,格式化ext3文件系统并挂载
fdisk /dev/sdc
mkfs.ext3 /dev/sdc1
mkdir /test
mount /dev/sdc1 /test/
df -hT



二、安装依赖包
yum install -y bzip2 gcc* pcre* wget*
yum install -y e2fsprogs-devel e2fsprogs-libs

三、编译安装extundelete
cd /test
wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2

四、打包
tar jxvf extundelete-0.2.4.tar.bz2

五、安装程序
cd extundelete-0.2.4/
./configure --prefix=/usr/local/extundelete && make && make install

六、创建软链接
ln -s /usr/local/extundelete/bin/* /usr/bin/

七、模拟删除并查看
cd /test
echo a>a
echo a>b
echo a>c
echo a>d
ls
rm -rf a b
extundelete /dev/sdc1 --inode2

八、恢复/dev/sdc1文件系统下的所有内容
cd ~
umount /test
extundelete /dev/sdc1 --restore-all

九、查看
ls RECOVERED_FILES/

十、完成
日志的功能
- 用于记录系统、程序运行中发生的各种事件
- 通过阅读日志,有助于诊断和解决系统故障
日志文件的分类
-
内核及系统日志
由系统服务rsyslog统一进行管理,日志格式基本相似
主配置文件/etc/rsyslog.conf
-
用户日志
记录系统用户登录及退出系统的相关信息
-
程序日志
由各种应用程序独立管理的日志文件,记录格式不统一
日志保存位置
默认位于:/var/log目录下
主要日志文件介绍
| 内核及公共消息日志 | /var/log/messages |
|---|---|
| 计划任务日志 | /var/log/cron |
| 系统引导日志 | /var/log/dmesg |
| 邮件系统日志 | /var/log/maillog |
| 用户登录日志 | /var/log/lastlog /var/log/secure /var/log/wtmp /var/run/btmp |
日志大类
1、系统相关日志
rsyslog
2、应用程序日志
例如:
web类应用程序,httpd nginx——》访问日志和错误日志
数据库:redis RDB日志 AOF日志 mysql 二进制日志 中继日志
3、业务日志
日志消息级别
配置日志输出内容的时候,可以指定告警级别
时间戳 用户/来源 警戒级别 描述信息
| 级别 | 消息 | 级别 | 说明 |
|---|---|---|---|
| 0 | EMERG | 紧急 | 会导致主机系统不可用的情况 |
| 1 | ALERT | 警告 | 必须马上采取措施解决的问题 |
| 2 | CRIT | 严重 | 比较严重的情况 |
| 3 | ERR | 错误 | 运行出现错误 |
| 4 | WARNING | 提醒 | 可能会影响系统功能的事件 |
| 5 | NOTICE | 注意 | 不会影响系统但值得注意 |
| 6 | INFO | 信息 | 一般信息 |
| 7 | DEBUG | 调试 | 程序或系统调试信息等 |
保存了用户登录、退出系统等相关信息
- /var/log/lastlog最近的用户登录事件
- /var/log/wtmp用户登录、注销及系统开、关机事件
- /var/run/utmp.当前登录的每个用户的详细信息
- /var/log/secure:与用户验证相关的安全性事件
分析工具
- users、who、w、last、lastb
- last 命令用于查询成功登录到系统的用户记录
- lastb 命令用于查询登录失败的用户记录
由相应的应用程序独立进行管理
-
Web服务:/var/log/httpd/
access log //记录客户访问事件
error log//记录错误事件
-
代理服务:/var/log/squid/
access.log、cache.log
-
分析工具
-
文本查看、grep过滤检索、Webmin管理套件中查看
-
awk、sed等文本过滤、格式化编辑工具
-
Webalizer、Awstats等专用日志分析工具
日志管理策略
-
及时作好备份和归档
延长日志保存期限
-
控制日志访问权限
日志中可能会包含各类敏感信息,如账户、口令等
-
集中管理日志
将服务器的日志文件发到统一的日志文件服务器
便于日志信息的统一收集、整理和分析
杜绝日志信息的意外丢失、:恶意篡改或删除
相关文章:
Linux---文件系统和日志分析
文章目录 文件系统和日志分析inode和block概述inode包含文件的元信息用stat命令可以查看某个文件的inode信息Linux系统文件三个主要的时间属性 目录文件的结构用户通过文件名打开文件时,系统内部的过程查看inode号码的方法硬盘分区后的结构访问文件的简单流程inode的…...
MySQL 体系架构
文章目录 一. MySQL 分支与变种1. Drizzle2. MariaDB3. Percona Server 二. MySQL的替代1. Postgre SQL2. SQLite 三. MySQL 体系架构1.连接层2 Server层(SQL处理层)3. 存储引擎层1)MySQL官方存储引擎概要2)第三方引擎3࿰…...
跨站脚本攻击漏洞
1.JavaScript JavaScript 是一种脚本,一门编程语言,它可以在网页上实现复杂的功能,网页展现给你的不再是简单的静态信息,而是实时的内容更新,交互式的地图,2D/3D动画,滚动播放的视频等等。 &a…...
RabbitMQ入门与进阶
RabbitMQ入门与进阶 基础篇1. 为什么需要消息队列?2. 什么是消息队列?3. RabbitMQ体系结构介绍4. RabbitMQ安装5. HelloWorld6. RabbitMQ经典用法(工作模式)7. Work Queues8. Publish/Subscribe9. Routing10. Topics 进阶篇1. RabbitMQ整合SpringBoot2. 消息可靠性投递故障情…...
Unity新输入系统 之 InputActions(输入配置文件)
本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正 首先你应该了解新输入系统的基本单位Unity新输入系统 之 InputAction(输入配置文件最基本的单位࿰…...
Linux运维篇-误删/bin,/sbin目录怎么修复系统
这里写自定义目录标题 前言实例挂载镜像,重启系统进入救援模式拷贝镜像系统中的/bin和/sbin目录到原系统重启系统 总结 前言 当你看到这篇文章的时候,你的系统可能已经无法登录,或者正在处于登录状态但是不能执行任何常规的命令,…...
构建高效外贸电商系统的技术探索与源码开发
在当今全球化的经济浪潮中,外贸电商作为连接国内外市场的桥梁,其重要性日益凸显。一个高效、稳定、功能全面的外贸电商系统,不仅能够助力企业突破地域限制,拓宽销售渠道,还能提升客户体验,增强品牌竞争力。…...
Java设计模式:中介者模式详解与最佳实践
Java设计模式:中介者模式详解与最佳实践 1. 引言 在软件开发过程中,特别是复杂系统的构建中,模块间的交互往往成为影响代码质量的重要因素。当模块之间耦合度过高时,系统的维护、扩展和理解成本都会显著增加。为了降低模块之间的…...
Matlab绘制像素风字母颜色及透明度随机变化动画
本文是使用 Matlab 绘制像素风字母颜色及透明度随机变化动画的教程 实现效果 实现代码 如果需要更改为其他字母组合,在下面代码的基础上简单修改就可以使用。 步骤:(1) 定义字母形状;(2) 给出字母组合顺序;(3) 重新运行程序&#…...
C:每日一题:二分查找
1、知识介绍: 1.1 概念: 二分查找是一种在有序数组中查找某一特定元素的搜索算法 1.2 基本思想: 每次将待查找的范围缩小一半,通过比较中间元素与目标元素的大小,来决定是在左半部分还是右半部分继续查找。 举个生…...
python Django中使用ORM进行分组统计并降序排列
python Django中使用ORM进行分组统计并降序排列 # 使用supplier和Count进行分组统计,其中supplier为MyModel的一个字段 supplier_counts MyModel.objects.values(supplier).annotate(countCount(supplier)).order_by(-count) # 输出统计结果 for supplier_count in supplier_…...
QT C++ 编写modbus 总结
[开源库的使用]libModbus编译及使用_libmodbus库-CSDN博客 libmodbus的下载与编译_modbus库文件下载-CSDN博客 【QT5】解决 QT 界面中文显示乱码问题_qt5输出中文乱码解决方法-CSDN博客 Qt:解决qt修改完ui文件起不到作用_qt ui文件修改后不生效-CSDN博客...
基于SpringBoot的网络海鲜市场系统的设计与实现
TOC springboot219基于SpringBoot的网络海鲜市场系统的设计与实现 绪论 1.1 选题背景 当人们发现随着生产规模的不断扩大,人为计算方面才是一个巨大的短板,所以发明了各种计算设备,从结绳记事,到算筹,以及算盘&…...
c#相关基础知识
c#参数4种种别 值参:像Java的正常数据的传输 ref:对参数的指向是参数本身的地址,而不是数据的副本,所以可以对数据进行直接操作 out: 绑定控件,控件传输值赋值给类中的内部类 待定...
注意力机制 — 它是什么以及它是如何工作的
一、说明 注意力机制是深度学习领域的一个突破。它们帮助模型专注于数据的重要部分,并提高语言处理和计算机视觉等任务的理解和性能。这篇文章将深入探讨深度学习中注意力的基础知识,并展示其背后的主要思想。 二、注意力机制回顾 在我们谈论注意力之前&…...
学习嵌入式第二十六天
进程线程 1.进程的概念 2.进程 和 程序 硬盘中程序 ,加载到内存中,运行起来,就是进程 创建线程 pthread_create posix thread create 线程执行 ---体现在线程执行函数 (回调函数) 线程退出 ---pthread_exit() …...
speech语音audio音频
在信号处理和语言技术领域,speech 和 audio 是两个相关但不同的概念。它们有各自的定义和应用场景。以下是对这两个术语的详细解释: 1. Speech(语音) Speech 主要指的是人类说话时产生的声音。它是人类语言交流的一种主要形式&a…...
最常用的正则表达式规则和语法
正则表达式(Regular Expression,简称 regex)是一种用于匹配字符串的强大工具。它使用特定的语法规则来定义字符串模式,可以用来搜索、替换、验证字符串等。以下是一些常用的正则表达式规则和语法: 1. 基本字符匹配 . :匹配任意单个字符(除了换行符)。 示例:a.c 可以匹…...
Datawhale X 魔搭 AI夏令营第四期-魔搭生图task1学习笔记
根据教程提供的链接,进入相应文章了解魔搭生图的主要工作是通过对大量图片的训练,生成自己的模型,然后使用不同的正向、反向提示词使模型输出对应的图片 1.官方跑baseline教程链接:Task 1 从零入门AI生图原理&实践 2.简单列举一下赛事的…...
WPF中XAML相对路径表示方法
在WPF XAML中,相对路径是一种非常实用的方式来引用资源文件,如图像、样式表和其他XAML文件。相对路径可以帮助您构建更加灵活和可移植的应用程序,因为它允许资源文件的位置相对于XAML文件的位置进行定位。 相对路径的表示方法 在XAML中&…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
