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

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号码便于识别的别称

用户通过文件名打开文件时,系统内部的过程

  1. vi 1.txt——》shell翻译——》系统
  2. 系统找到这个文件名对应的inode号码
  3. 通过inode号码,获取inode信息
  4. 根据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、业务日志

日志消息级别

配置日志输出内容的时候,可以指定告警级别

时间戳 用户/来源 警戒级别 描述信息

级别消息级别说明
0EMERG紧急会导致主机系统不可用的情况
1ALERT警告必须马上采取措施解决的问题
2CRIT严重比较严重的情况
3ERR错误运行出现错误
4WARNING提醒可能会影响系统功能的事件
5NOTICE注意不会影响系统但值得注意
6INFO信息一般信息
7DEBUG调试程序或系统调试信息等

保存了用户登录、退出系统等相关信息

  • /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&#xff0…...

跨站脚本攻击漏洞

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(输入配置文件最基本的单位&#xff0…...

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

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

用docker来安装部署freeswitch记录

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

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...