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

[Linux入门] Linux 文件系统与日志分析入门指南

目录

一、深入理解 Linux 文件系统

1️⃣存储的基本单位:扇区与块

2️⃣文件的 "身份证":inode(索引节点)

3️⃣文件名与 inode 的关系

4️⃣通过 inode 删除特殊文件名的文件

二、误删文件的恢复技巧

1️⃣EXT3/EXT4 文件系统(extundelete 工具)

2️⃣XFS 文件系统(xfs_undelete 与备份恢复)

三、Linux 日志分析:系统的 "日记本"

1️⃣日志的类型与位置

2️⃣日志优先级(重要程度)

3️⃣常用日志查看命令

4️⃣用户登录日志查询

总结


一、深入理解 Linux 文件系统

Linux 文件系统的设计逻辑是高效管理数据的基础,核心在于扇区、块(block)和索引节点(inode) 三者的配合。

1️⃣存储的基本单位:扇区与块

  • 扇区:硬盘的最小存储单位,每个扇区固定为 512 字节,是硬件层面的数据存储单元。
  • 块(block):操作系统读取数据的最小单位,默认大小为 4k(即 8 个扇区)。系统一次至少读取一个块,即使文件小于 4k,也会占用一个块(剩余空间会浪费)。

2️⃣文件的 "身份证":inode(索引节点)

每个文件在 Linux 中都有两个核心部分:数据(存放在 block 中) 和属性信息(存放在 inode 中)。

  • inode 存储的信息:

    • 文件的属性(创建者、权限、大小、创建时间等);
    • 指向文件数据所在 block 的指针(类似 "目录",告诉系统数据存在哪里);
    • 注意:inode 不包含文件名,文件名存放在上级目录的 block 中。
  • inode 的特点:

    • 每个文件至少对应 1 个 inode 和 1 个 block(文件大于 4k 时会占用多个 block);
    • 同一分区中,inode 号相同的文件互为硬链接(可通过多个文件名访问同一份数据);
    • inode 在文件系统格式化时生成,总数固定,可通过df -i命令查看分区的 inode 使用情况。
  • 如何查看 inode 信息:

    • 使用stat 文件名命令,例如stat test.txt,可显示文件的 inode 号、权限、时间戳等详细信息;
    • 使用stat -L文件名命令,例如stat -L test.txt,可显示符号链接指向的目标文件信息;
    • 使用ls -i 文件名命令,直接查看文件对应的 inode 号,例如ls -i test.txt

3️⃣文件名与 inode 的关系

Linux 系统内部通过 inode 号识别文件,文件名只是用户便于记忆的 "别名"。当你访问一个文件时,系统会:

  1. 根据文件名找到对应的 inode 号;
  2. 通过 inode 号获取 inode 信息;
  3. 依据 inode 中的指针找到数据所在的 block,读取数据。

4️⃣通过 inode 删除特殊文件名的文件

当文件名包含特殊字符(如换行符、-开头)难以直接删除时,可通过 inode 号删除:

  • 方法 1(推荐):find /path/to/directory -inum inode号  -delete例如find /tmp -inum 12345 -delete
  • 方法 2:ls -i /path/to/directory | grep inode号 | awk '{print $2}' | xargs rm
删除多个具有相同inode的文件(硬链接):
  •  find /path -xdev -samefile /path/to/file -delete

二、误删文件的恢复技巧

Linux 中误删文件(如rm -rf操作)后,若未被新数据覆盖,可通过工具恢复。不同文件系统的恢复方法不同:

1️⃣EXT3/EXT4 文件系统(extundelete 工具)

适用于 EXT 类型分区,步骤如下:

  1. 立即停止操作:避免新数据写入覆盖被删文件;
  2. 卸载分区umount /挂载点(如umount /test);
  3. 恢复文件
    • 恢复单个文件:extundelete /dev/sdb1 --restore-file 文件名
    • 恢复所有文件:extundelete /dev/sdb1 --restore-all
  4. 查看结果:恢复的文件会存放在当前目录的RECOVERED_FILES文件夹中。

2️⃣XFS 文件系统(xfs_undelete 与备份恢复)

XFS 文件系统恢复难度较高,建议提前备份,常用工具:

  • xfs_undelete:恢复近期删除的文件,例如:
  • xfs_undelete -t -24hour -o /opt /dev/sdb1(恢复 24 小时内的文件到/opt目录,/dev/sdb1表示要恢复的盘符
  • xfsdump/xfsrestore(推荐备份方案):
    • 完全备份:xfsdump -f /backup/sdb1_dump /dev/sdb1
    • 恢复备份:xfsrestore -f /backup/sdb1_dump /挂载点

注意:XFS 恢复后文件名可能丢失,需通过文件大小、创建时间识别。

三、Linux 日志分析:系统的 "日记本"

日志是诊断系统问题、追踪安全事件的关键。Linux 日志主要存放在/var/log/目录,按类型可分为内核日志、系统日志、用户日志和程序日志。

1️⃣日志的类型与位置

日志类型典型文件 / 目录记录内容
内核日志dmesg命令、/var/log/kern.log系统启动信息、硬件错误、内核故障
系统日志/var/log/syslog/var/log/auth.log系统事件、登录认证、服务启停
用户日志/var/log/wtmp/var/log/lastlog用户登录 / 退出记录、登录失败尝试
程序日志/var/log/apache2//var/log/mysql/                 应用程序运行状态、错误信息                 (如 Web 服务、数据库)

2️⃣日志优先级(重要程度)

Linux 日志按重要性分为 8 个级别(0 级最严重):

  • 0:EMERG(紧急,系统不可用);
  • 1:ALERT(警告,需立即处理);
  • 2:CRIT(严重错误);
  • 3:ERR(普通错误)
  • 4:WARNING(警告);
  • 5:NOTICE(注意);
  • 6:INFO(信息);
  • 7:DEBUG(调试信息)

3️⃣常用日志查看命令

  • 实时查看日志:tail -f /var/log/syslog(实时刷新新日志);
  • 搜索关键词:grep "error" /var/log/syslog(查找包含 "error" 的日志);
  • 内核日志:dmesg(查看启动信息)、dmesg -Tl err(查看错误级别日志);
  • systemd 日志:journalctl(更强大的日志管理):
    • 实时查看:journalctl -f
    • 按服务查询:journalctl -u nginx
    • 按错误级别:journalctl -p err

4️⃣用户登录日志查询

用户登录相关日志为二进制文件,需通过专用命令查看:

  • users:显示当前登录的用户名;
  • who:显示登录用户的终端、登录时间、来源 IP;
  • last:查看用户成功登录的历史记录;
  • lastb:查看登录失败的记录(如密码错误尝试)。

总结

Linux 文件系统的核心是 inode 与 block 的配合,理解它们的工作原理能帮你更好地管理文件;误删文件后,及时卸载分区并使用对应工具恢复是关键;而日志分析则是系统运维的 "火眼金睛",熟练掌握tailgrepjournalctl等命令能让你快速定位问题。

http://www.lryc.cn/news/597261.html

相关文章:

  • Linux中scp命令传输文件到服务器报错
  • (Arxiv-2025)利用 MetaQueries 实现模态间迁移
  • 在 Ubuntu 上将 Docker 降级到版本 25.0.5 (二) 降低版本,涉及兼容性问题
  • 欧盟网络安全标准草案EN 18031详解
  • 我用EV-21569-SOM评估来开发ADSP-21569(十三)-SigmaStudio Plus做开发(4)
  • sqlsuger 子表获取主表中的一个字段的写法
  • 进程间通信之-----零拷贝
  • AI替代人工:浪潮中的沉浮与觉醒
  • 【Java学习|黑马笔记|Day21】IO流|缓冲流,转换流,序列化流,反序列化流,打印流,解压缩流,常用工具包相关用法及练习
  • Log4j2漏洞复现
  • 论文解析 基于遗传算法增强YOLOv5算法的合成数据风力涡轮叶片缺陷检测
  • mysql什么时候用char,varchar,text,longtext
  • 什么是HTTP长连接、短连接?谁更能抗DoS攻击?
  • C# 正则表达式
  • C#使用socket报错 System.Net.Sockets.SocketException:“在其上下文中,该请求的地址无效。
  • 抽奖系统(2)——注册/登陆
  • C#面向对象三大特性的封装
  • C#定时任务实战指南:从基础Timer到Hangfire高级应用
  • 【系统全面】常用SQL语句大全
  • 避坑:C# json反序列化为float精度丢失
  • 棱镜技术在光谱相机中应用
  • 第八章 W55MH32 HTTP Client示例
  • 机器人行业工商注册企业基本信息数据(1958-2023年)
  • 9.0% 年增速驱动!全球自清洁滚轮拖布机器人市场2031年将迈向 946 百万美元
  • [spring6: @EnableWebSocket]-源码解析
  • [深度学习] 大模型学习3下-模型训练与微调
  • (Arxiv-2025)OmniGen2:通向先进多模态生成的探索
  • springboot集成LangChain4j
  • 华为仓颉编程语言实践体验
  • 开源 Arkts 鸿蒙应用 开发(十)通讯--Http数据传输