深入理解Linux文件系统与日志分析

一:inode和block概述

1.1文件数据包括元信息与实际数据

文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区字节存储512字节,操作系统读取硬盘信息,不会-一个-个扇区读取。实际情况一 下连续读取
多个扇区,-次性读取多个扇区,叫做块(Block) ,这种多个扇区组成的"块"
是文件存取的最小单位,最常见的4K,就是8个扇区组成的-个Block块,
512字节*8=4096字节.

1.2 block(快)

  • 连续的八个扇区组成一个block
  • 是文件存取的最小单位
  • inode即为index node,就是索引节点
  • inode表中包含文件系统所有文件列表
  • 一个节点是在一个表项,包含了有关文件的信息(元数据)。
  • 一个文件有且只有一个inode
  • inode中包含12个直接指针,1个间接指针,1个双间接指针,1个三间接指针
    元数据(medata)即文件的属性信息,包括文件的类型、权限、owner、group、链接数、三个时间戳,文件大小、扩展属性,block指针

1.3 inode(索引节点)

  • 中文译名为“索引节点”。也叫i节点
  • 用于存储文件元信息
  • 文件数据存储在block中
  • 每块block只能存储一个文件
  • block 文件系统的最小存储单位是 1k,2k,4k,2^n

mark

1.4inode包含文件的元信息

inode包含文件的元信,具体有下面的内容
●文件的字节数
●文件拥有者的User ID [不包含文件名]
●文件的Group ID
●文件的读、写、执行权限.
●文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。

●链接数,即有多少文件名指向这个inode

●文件数据block位置

这里可以用stat命令查看某个文件的inode信息

mark

除了文件名以外的所有文件信息,都存在inode中

1.5Linux系统文件三个主要的时间属性

●ctime(change time)
◆最后- -次改变文件或目录(属性)的时间
●atime( access time )
◆最后一-次访问文件或目录的时间
●mtime(modify time)
◆最后一次修改文件或目录(内容)的时间

扫描二维码关注公众号,回复: 11410516 查看本文章

1.6 inode的内容

inode中并不包括文件名,其实文件名是放在目录中的,linux系统中一切皆文件,因此目录也是文件。 (表格每一行称为一个目录项)

文件名1 inode号码1
文件名2 inode号码2

■每个inode都有一个号码,操作系统用inode号码来识
别不同的文件
■Linux系统内部不使用文件名,而使用inode号码来识
别文件
■对于用户,文件名只是inode号码便于识别的别称.

1.7 inode的号码

用户通过文件名打开文件时,系统内部的过程
1.系统找到这个文件名对应的inode号码
2.通过inode号码, 获取inode信息
3.根据inode信息,找到文件数据所在的block,读出数据

文件名----对应的inode号码----inode信息----找到文件所在的block,读取数据

查看inode号码的方法

ls -i命令:查看文件对应的inode号码
ls -i aa.txt
stat命令:查看文件indoe信息中的inode号码
stat aa.txt
案列:
[root@localhost ~]# cd /opt
[root@localhost opt]# ls -i    ##直接查opt目录下的inode信息
34547259 1.txt  36385500 rh
[root@localhost opt]# ls -ai    ##可以查看隐藏当前目录下的隐藏文件对应的inode信息
33632290 .   34547259 1.txt
      64 ..  36385500 rh
[root@localhost opt]# stat 1.txt   ##通过1.txt文件的inode信息
  文件:"1.txt"
  大小:0         	块:0          IO 块:4096   普通空文件
设备:fd00h/64768d	Inode:34547259    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:usr_t:s0
最近访问:2020-06-23 14:16:37.189915028 +0800
最近更改:2020-06-23 14:16:37.189915028 +0800
最近改动:2020-06-23 14:16:37.189915028 +0800
创建时间:-

当用户在linux系统中视图访问一个文件时候,系统会根据文件名去查找对应的inode,看该用户是否具有
访问这个文件的权限,如果有,就指向对应的数据block,如果没有,就返回 permission deied
而一块硬盘分区后的结构则如下:

文件名 目录项 目录快
元信息 inode inode表区块
数据 block block数据块

mark

访问文件的简单流程

mark

1.8 inode的大小

格式化文件系统确定inode的总数

inode也会消耗硬盘空间

  • 每个inode的大小

  • 一般是128字节或256字节

    使用df -i命令可以查看每个硬盘分区的inode总数和已经使用的数量

    mark

1.9 inode的特殊作用

由于inode号码与文件名分离,导致一些Unix/Linux系统具有以下的现象

  • 当文件名包含特殊字符,可能无法正常删除文件,直接删
    除inode,也可以删除文件
  • 移动或重命名文件时,只改变文件名,不影响inode号码
  • 打开一 个文件后,系统通过inode号码来识别该文件,不
    再考虑文件名.

二:硬链接与软链接

我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块。图 1.展示了程序通过文件名获取文件内容的过程

mark

链接文件分类

软链接(又称符号链接) 硬链接
删除范围 失效 仍旧可用
使用范围 适用于文件或目录 只可用于文件
保存位置 与原始文件可以位于不同的文件系统 必须与原始文件在同一个一个文件系统(如一个Linux分区)

2.1硬链接

-般情况下,文件名和inode号码是一-对应关系, 每个inode号码对应-个文件名。但是
linux系统允许多个文件名指向同-个inode号码,这意味着,可以不同的文件名访问同样的内容,
In命令可以创建硬连接,
命令格式为:

运行该命令以后,源文件与目标文件的inode号码相同,都是指向同一个inode, inode信息中的
连接数这时就会增加1
当-个文件拥有多个硬连接时,对文件内容修改,会影响所有文件名,但是删除-个文件名,不会影响另外-一个文件名称
访问,删除一个文件名,只会inode中的连接数减1,需要注意的是不能对目录做硬连接。

2.2软连接

​ 软连接就是创建一个独立的文件,而这个文件会让数据的读取指向它连接的那个文件名称
列如,文件A和B的inode号码虽然不一样,但是文件A的,内容是文件B的路径,读取文件A时
系统会自动访问者导向文件B,这时,文件A就称为文件B的‘软连接’或者符号连接.

软链接的创建命令格式为:

in -s 源文件或目录 目标文件或目录
[root@localhost ~]# echo a > a
[root@localhost ~]# ln -s a b
[root@localhost ~]# ll
总用量 12
-rw-r--r--. 1 root root    2 6月  23 19:19 a
-rw-------. 1 root root 2057 6月  17 23:17 anaconda-ks.cfg
lrwxrwxrwx. 1 root root    1 6月  23 19:19 b -> a
-rw-r--r--. 1 root root 2105 6月  17 23:17 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 6月  17 23:18 公共
drwxr-xr-x. 2 root root    6 6月  17 23:18 模板
drwxr-xr-x. 2 root root    6 6月  17 23:18 视频
drwxr-xr-x. 2 root root    6 6月  17 23:18 图片
drwxr-xr-x. 2 root root    6 6月  17 23:18 文档
drwxr-xr-x. 2 root root    6 6月  17 23:18 下载
drwxr-xr-x. 2 root root    6 6月  17 23:18 音乐
drwxr-xr-x. 2 root root    6 6月  17 23:18 桌面
[root@localhost ~]# stat a b
  文件:"a"
  大小:2         	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:100663418   硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2020-06-23 19:19:09.351813740 +0800
最近更改:2020-06-23 19:19:09.351813740 +0800
最近改动:2020-06-23 19:19:09.351813740 +0800
创建时间:-
  文件:"b" -> "a"
  大小:1         	块:0          IO 块:4096   符号链接
设备:fd00h/64768d	Inode:100912800   硬链接:1
权限:(0777/lrwxrwxrwx)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2020-06-23 19:19:21.969751922 +0800
最近更改:2020-06-23 19:19:21.968751927 +0800
最近改动:2020-06-23 19:19:21.968751927 +0800
创建时间:-
[root@localhost ~]# rm -rf a
[root@localhost ~]# ll
总用量 8
-rw-------. 1 root root 2057 6月  17 23:17 anaconda-ks.cfg
lrwxrwxrwx. 1 root root    1 6月  23 19:19 b -> a     ##闪烁,软链接失效
-rw-r--r--. 1 root root 2105 6月  17 23:17 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 6月  17 23:18 公共
drwxr-xr-x. 2 root root    6 6月  17 23:18 模板
drwxr-xr-x. 2 root root    6 6月  17 23:18 视频
drwxr-xr-x. 2 root root    6 6月  17 23:18 图片
drwxr-xr-x. 2 root root    6 6月  17 23:18 文档
drwxr-xr-x. 2 root root    6 6月  17 23:18 下载
drwxr-xr-x. 2 root root    6 6月  17 23:18 音乐
drwxr-xr-x. 2 root root    6 6月  17 23:18 桌面

三:恢复误删除的文件

3.1:实验:恢复XFS类型的文件

在Linux中,删除rm命令使用需谨慎,有时候可能由于误操作,导致重要文件删除了,这时不要太紧张,操作得当的话,还是可以恢复的。
EXT 类型文件恢复#

删除一个文件,实际上并不清除inode节点和block的数据,只是在这个文件的父目录里面的block中,删除这个文件的名字。Linux是通过Link的数量来控制文件删除的,只有当一个文件不存在任何Link的时候,这个文件才会被删除。

当然,这里所指的是彻底删除,即已经不能通过回收站找回的情况,比如使用rm -rf来删除数据。针对Linux下的EXT文件系统,可用的恢复工具有debugfs、ext3grep、extundelete等。 其中extundelete是一个开源的Linux数据恢复工具,支持ext3、ext4文件系统。

在数据被误删除后,第一时间要做的就是卸载被删除数据所在的分区,如果是根分区的数据遭到误删,就需要将系统进入单用户模式,并且将根分区以只读模式挂载。这样做的原因很简单,因为将文件删除后,仅仅是将文件的inode节点中的扇区指针清零,实际文件还存储在磁盘上,如果磁盘继续以读写模式挂载,这些已删除的文件的数据块就可能被操作系统重新分配出去,在这些数据库被新的数据覆盖后,这些数据就真的丢失了,恢复工具也回天无力。所以以只读模式挂载磁盘可以尽量降低数据库中数据被覆盖的风险,以提高恢复数据成功的比例。

3.11:xfsdump命令格式

xfsdump 【参数】【备份存放路径名】【需备份路径】

xfsdump支持的备份格式为:0 (完全备份)1<=level<=9 曾量备份

xfsdump常用选项:-f,-L,-M,-S

xfserestore -f 恢复文件的位置 存放恢复文件的位置

编译安装 extundelete
在编译安装 extundelete 之前需要先安装两个依赖包 e2fsprogs-libs 和 e2fsprogs-devel,
这两个包在系统安装光盘的/Package 目录下就有,使用 rpm 或 yum 命令将其安装。
e2fsprogs-devel 安装依赖于 libcom_err-devel 包。 安装完依赖包之后,
即可将提前上传的 extundelete 软件包解压、配置、编译、安装

[root@localhost ~]#  yum -y install e2fsprogs-devel e2fsprogs-libs  ##安装e2fsprogs-libs 和 e2fsprogs-devel这两个包
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.huaweicloud.com
软件包 e2fsprogs-libs-1.42.9-17.el7.x86_64 已安装并且是最新版本
正在解决依赖关系
--> 正在检查事务
---> 软件包 e2fsprogs-devel.x86_64.0.1.42.9-17.el7 将被 安装
--> 正在处理依赖关系 libcom_err-devel(x86-64) = 1.42.9-17.el7,它被软件包 e2fsprogs-devel-1.42.9-17.el7.x86_64 需要
--> 正在处理依赖关系 pkgconfig(com_err),它被软件包 e2fsprogs-devel-1.42.9-17.el7.x86_64 需要
--> 正在检查事务
---> 软件包 libcom_err-devel.x86_64.0.1.42.9-17.el7 将被 安装
--> 解决依赖关系完成
[root@localhost ~]# yum -y install wget    ##安装wget下载文件工具
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.huaweicloud.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 wget.x86_64.0.1.14-18.el7 将被 升级
---> 软件包 wget.x86_64.0.1.14-18.el7_6.1 将被 更新
--> 解决依赖关系完成
[root@localhost ~]# wget     ###用wget下载文件      http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
--2020-06-24 14:12:58--  http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
正在解析主机 nchc.dl.sourceforge.net (nchc.dl.sourceforge.net)... 140.110.96.69, 2001:e10:ffff:1f02::17
正在连接 nchc.dl.sourceforge.net (nchc.dl.sourceforge.net)|140.110.96.69|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:108472 (106K) [application/octet-stream]
正在保存至: “extundelete-0.2.4.tar.bz2”

100%[=======>] 108,472     8.56KB/s 用时 12s    

2020-06-24 14:13:11 (8.84 KB/s) - 已保存 “extundelete-0.2.4.tar.bz2” [108472/108472])

[root@localhost ~]# yum -y install bzip2        ##安装bzip2压缩包
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
软件包 bzip2-1.0.6-13.el7.x86_64 已安装并且是最新版本
无须任何处理
root@localhost opt]#  cd extundelete-0.2.4/    ##进入软件目录
[root@localhost ~]#  tar xvf extundelete-0.2.4.tar.bz2  ##生成归档压缩包
[root@localhost extundelete-0.2.4]#  ./configure -prefix=/usr/local/extundelete && make && make install      ##进行编译安装备份文件放在/usr/local/extundelete
Configuring extundelete 0.2
Writing generated files to disk
make -s all-recursive
Making all in src
Making install in src
  /usr/bin/install -c extundelete '/usr/local/extundelete/bin'

3.12 模拟删除并执行恢复操作

先添加一块磁盘,使用fdisk  -l查看分区
磁盘 /dev/sda:322.1 GB, 322122547200 字节,629145600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000a0b1b

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   629145599   313523200   8e  Linux LVM
命令(输入 m 获取帮助):n         ###创建分区
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p        ##打印分区
分区号 (3,4,默认 3):
No free sectors available

命令(输入 m 获取帮助):
命令(输入 m 获取帮助):
命令(输入 m 获取帮助):w        ##保存退出
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。
[root@localhost ~]# mkfs.ext3  /dev/sda       ###格式化分区
mke2fs 1.42.9 (28-Dec-2013)
/dev/sda is entire device, not just one partition!
无论如何也要继续? (y,n) y                       ##确定
/dev/sda is apparently in use by the system; will
[root@localhost ~]# mkdir /shuai              ##创建shuai目录

[root@localhost ~]# echo a>a && echo a>b && echo a>c  && echo a>d 
[root@localhost ~]# ls
1.txt  a                c                  extundelete-0.2.4.tar.bz2  公共  图片  音乐
2.txt  anaconda-ks.cfg  d                  initial-setup-ks.cfg       模板  文档  桌面
3.txt  b                extundelete-0.2.4  shuai 

[root@localhost ~]# extundelete /dev/sdb     ##恢复
No action specified; implying --superblock.
NOTICE: Extended attributes are not restored.
WARNING: EXT3_FEATURE_INCOMPAT_RECOVER is set.
The partition should be unmounted to undelete any files without further data loss.
If the partition is not currently mounted, this message indicates 
it was improperly unmounted, and you should run fsck before continuing.
If you decide to continue, extundelete may overwrite some of the deleted
files and make recovering those files impossible.  You should unmount the
file system and check it with fsck before using extundelete.
Would you like to continue? (y/n) y      ###输入y 即可查看该文件系统使用情况
Inodes count: 3932160
Blocks count: 15728640
Reserved blocks count: 786432
Free blocks count: 15435717
Free inodes count: 3932149
First Data Block: 0
Block size: 4096
Fragment size: 4096
# Blocks per group: 32768
# Fragments per group: 1
# Inodes per group: 8192
Mount time: 1592987623
Write time: 1592987623
Mount count: 1
Maximal mount count: -1
Magic signature: 61267
File system state: 1
Behaviour when detecting errors: 1
minor revision level: 0
time of last check: 1592987482
max. time between checks: 0
OS: 0
Revision level: 1
Default uid for reserved blocks: 0
Default gid for reserved blocks: 0
First non-reserved inode: 11
size of inode structure: 256
block group # of this superblock: 0
compatible feature set: 60
incompatible feature set: 710
readonly-compatible feature set: 123
128-bit uuid for volume: 3e0d354a8e674c41a8ef3e3327f61af7
For compression: 0
Nr to preallocate for dirs: 0
Per group table for online growth: 1024
uuid of journal superblock: 00000000000000000000000000000000
inode number of journal file: 8
device number of journal file: 0
start of list of inodes to delete: 0
HTREE hash seed: 4c6d56fd02478115a6785f97e55f0126
Default hash version to use: 1
Default type of journal backup: 1
First metablock group: 0
When the filesystem was created: 1592987482
Compatible feature set: HAS_JOURNAL EXT_ATTR RESIZE_INODE DIR_INDEX
Incompatible feature set: FILETYPE RECOVER
Read only compatible feature set: SPARSE_SUPER LARGE_FILE

3.13:在centos 7.6中,xfs 类型文件备份和恢复

extundelete 工具仅可以恢复 EXT 类型的文件,无法恢复 CentOS 7 系统默认采用 xfs 类型的文件。
针对 xfs 文件系统目前也没有比较成熟的文件恢复工具,所以建议提前做好数 据备份,以避免数据丢失。
xfs 类型的文件可使用 xfsdump 与 xfsrestore 工具进行备份恢复。若系统中未安装 xfsdump与xfsrestore工具,
可以通过yum install -y xfsdump命令安装。xfsdump 按照inode 顺序备份一个 xfs 文件系统。xfsdump 的备份级别
有两种:0 表示完全备份;1-9 表示增量 备份。
xfsdump 的备份级别默认为 0。
xfsdump 的命令格式为:xfsdump -f 备份存放位置 要备份路径或设备文件。常用的备份参数包括以下几种:
-f:指定备份文件目录;
-L:指定标签 session label;
-M:指定设备标签 media label
-s:备份单个文件,-s 后面不能直接跟路径

首先创建一块磁盘 并挂载
[root@localhost ~]# fdisk -l    ##列出磁盘

磁盘 /dev/sdc:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/sda:322.1 GB, 322122547200 字节,629145600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000a0b1b
   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   629145599   313523200   8e  Linux LVM
磁盘 /dev/sdb:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
[root@localhost ~]# cd /hei         ##创建hei目录

[root@localhost ~]# mount /dev/sdc /hei         ##挂载到hei目录
[root@localhost ~]# df -h                       ##查看挂载点
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   54G  4.2G   50G    8% /
devtmpfs                 1.9G     0  1.9G    0% /dev
tmpfs                    1.9G     0  1.9G    0% /dev/shm
tmpfs                    1.9G   13M  1.9G    1% /run
tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               1014M  179M  836M   18% /boot
/dev/mapper/centos-home  245G   33M  245G    1% /home
tmpfs                    378M  4.0K  378M    1% /run/user/42
tmpfs                    378M   24K  378M    1% /run/user/0
/dev/sr0                 4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
/dev/sdc                  40G   33M   40G    1% /hei
[root@localhost ~]# cd /hei                       ##切换到hei目录
[root@localhost hei]# cp /etc/passwd ./           ##复制passwd到当前目录
[root@localhost hei]# mkdir test                  ##创建test目录
[root@localhost hei]# touch test/a                ##test创建文件a
[root@localhost hei]# yum -y install tree         ##安装tree
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.cn99.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
base                                                            | 3.6 kB  00:00:00     
extras                                                          | 2.9 kB  00:00:00     
updates                                                         | 2.9 kB  00:00:00     
updates/7/x86_64/primary_db                                     | 2.9 MB  00:00:00     
正在解决依赖关系
--> 正在检查事务
---> 软件包 tree.x86_64.0.1.6.0-10.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

=======================================================================================
 Package          架构               版本                       源                大小
=======================================================================================
正在安装:
 tree             x86_64             1.6.0-10.el7               base              46 k

事务概要
=======================================================================================
安装  1 软件包

总下载量:46 k
安装大小:87 k
Downloading packages:
tree-1.6.0-10.el7.x86_64.rpm                                    |  46 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : tree-1.6.0-10.el7.x86_64                                           1/1 
  验证中      : tree-1.6.0-10.el7.x86_64                                           1/1 
已安装:
  tree.x86_64 0:1.6.0-10.el7                                                   
完毕!
[root@localhost hei]# tree /hei      ##把hei以文件以树的形式列出来
/hei
├── passwd
└── test
    └── a
1 directory, 2 files
第二步:使用xfsdump命令备份整个分区
[root@localhost ~]# yum install -y xfsdump
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.cn99.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
软件包 xfsdump-3.1.7-1.el7.x86_64 已安装并且是最新版本
无须任何处理
[root@localhost ~]# xfsdump -f /opt/dump_sdc /dev/sdc
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.7 (dump format 3.0) - type ^C for status and control

please enter label for this dump session (timeout in 300 sec)
 -> dump_sdc
please enter label for media in drive 0 (timeout in 300 sec)
 -> sdc
[root@localhost hei]# xfsdump -l              ##查看备份内容信息
###删除之前创建的内容,模拟数据丢失##
[root@localhost ~]# cd /hei                   ##进入hei目录
[root@localhost hei]# ls                      ##列出hei目录
passwd  test
[root@localhost hei]# rm -rf *                ##删除
[root@localhost hei]# ls

[root@localhost hei]# xfsrestore -f /opt/dump_sdc /hei/
[root@localhost hei]# ls /hei
passwd  test

用xfsdump不支持时,需要注意以下的几个限制

1、xfsdump 不支持没有挂载的文件系统备份,所以只能备份已挂载的;
2、xfsdump 必须使用 root 的权限才能操作(涉及文件系统的关系);
3、xfsdump 只能备份 XFS 文件系统;
4、xfsdump 备份下来的数据(档案或储存媒体)只能让 xfsrestore 解析;
5、xfsdump 是透过文件系统的 UUID 来分辨各个备份档的,因此不能备份两个具有相同 UUID 的文件系统。

四:分析日志文件

Linux系统在运行的程序通常会把一些系统消息和错误消息写入对应的系统日志中,若是一旦出现问题,用户就可以通过查看日志来迅速定位,及时解决故障,所以学会查看日志文件也是在日常维护中很重要的操作。

4.1日志的功能

用于记录系统、程序运行中发生的各种事件
通过阅读日志,有助于诊断和解决系统故障

4.2日志文件的分类

内核及系统日志
由系统服务rsyslog统一进行管理,日志格式基本相似
用户日志.
记录系统用户登录及退出系统的相关信息
程序日志
由各种应用程序独立管理的日志文件,记录格式不统一

4.3日志保存位置

默认位于:/var/log目录下

4.4主要日志文件介绍

mark

4.5内核记录的一般格式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oYnJStR9-1593163076154)(C:\Users\liu\AppData\Roaming\Typora\typora-user-images\image-20200626162827423.png)]

4.6用户日志分析

保存了用户登录、退出系统等相关信息
●/var/log/lastlog:最近的用户登录事件
●/var/log/wtmp:用户登录、注销及系统开、关机事件
●/var/run/utmp:当前登录的每个用户的详细信息
●/var/log/secure:与用户验证相关的安全性事件
分析工具
●users、who、W、last、 lastb

由相应的应用程序独立进行管理

●Web服务: /var/log/httpd/
access_log、 error_ log
●代理服务: Ivar/log/squid/
◆access.log、cache.log、
●FTP服务: /var/log/xferlog
分析工具
●文本查看、grep过滤检索、Webmin管理套件中查看
●awk、sed等文本过滤格式化编辑_工具
●Webalizer、Awstats等专用日志分析 工具

4.7日志管理策略

  • 及时作好备份和归档

  • 延长日志保存期限

  • 控制日志访问权限

    日志中可能会包含各类敏感信息,如账户、口令等

集中管理日志

将服务器的日志文件发到统一的日志文件服务器

便于日志的信息统一收集、整理和分析

杜绝日志信息的意外丢失、恶意篡改或删除

4.8日志消息的级别

mark

4.9查询用户登录的历史记录------last、lastb命令

显示以前登录过的用户信息,last指令会搜索/var/log/wtmp文件(或者是经过-f选项指定的文件),然后列出文件中所有的用户信息。如果执行last指令时提示“last /var/log/wtmp∶ NO such file or directory”,则需要使用指令touch /var/log/wtmp手工创建此文件 lastb指令用来显示登录失败的用户信息,其用法和last一样,对应的日志文件是/var/log/btmp.此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

[root@localhost ~]# last               
root     pts/1        20.0.0.3         Fri Jun 26 14:36   still logged in   
root     pts/0        :0               Fri Jun 26 14:15   still logged in   
root     :0           :0               Fri Jun 26 14:15   still logged in   
reboot   system boot  3.10.0-957.el7.x Fri Jun 26 14:15 - 16:40  (02:25)    
root     pts/1        :0               Fri Jun 26 14:14 - 14:15  (00:00)    
root     pts/0        20.0.0.3         Fri Jun 26 08:27 - down   (05:47)    
root     pts/1        20.0.0.3         Wed Jun 24 16:58 - 17:33  (00:34)    
root     pts/0        :0               Wed Jun 24 16:28 - 08:27 (1+15:59)   
root     :0           :0               Wed Jun 24

lastb命令用于查询登录失败的用户记录,如登录的用户错误、密码不正确等情况都将记录在案。用于登录失败的情况属于安全事件,因为这表示可能有人在尝试猜解你的密码。除了使用lastb命令查看以外,也可以直接从安全日志文件 /var/log/secure中获得相关信息

[root@localhost ~]# lastb
root     ssh:notty    20.0.0.1         Wed Jun 17 
root     :0           :0               Wed Jun 17

un 26 14:15 - 16:40 (02:25)
root pts/1 :0 Fri Jun 26 14:14 - 14:15 (00:00)
root pts/0 20.0.0.3 Fri Jun 26 08:27 - down (05:47)
root pts/1 20.0.0.3 Wed Jun 24 16:58 - 17:33 (00:34)
root pts/0 :0 Wed Jun 24 16:28 - 08:27 (1+15:59)
root :0 :0 Wed Jun 24


lastb命令用于查询登录失败的用户记录,如登录的用户错误、密码不正确等情况都将记录在案。用于登录失败的情况属于安全事件,因为这表示可能有人在尝试猜解你的密码。除了使用lastb命令查看以外,也可以直接从安全日志文件 /var/log/secure中获得相关信息

[root@localhost ~]# lastb
root ssh:notty 20.0.0.1 Wed Jun 17
root :0 :0 Wed Jun 17


另外,尤其提醒管理人员注意的是,日志并不是安全可靠的,高明的黑客在入侵系统后,经常会打扫战场。所以需要综合运用以上的系统命令,全面,综合的进行审查和检测,切忌断章取义,否则将可能做出错误的判断

猜你喜欢

转载自blog.csdn.net/weixin_47151643/article/details/106972208
今日推荐