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中&…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...

用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...

【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...

wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...