恢复误删除的问题——EXT类型文件恢复和XFS类型文件备份和恢复

恢复误删除的问题

一、EXT 类型文件恢复

#####EXT 类型文件恢复#####
删除一个文件,实际上并不清除 inode 节点和 block 的数据,只是在这个文件的父目录 里面的 block 中,
删除这个文件的名字。Linux 是通过 Link 的数量来控制文件删除的,只有 当一个文件不存在任何 Link 的时候,
这个文件才会被删除。 在 Linux 系统运维工作中,经常会遇到因操作不慎、操作错误等导致文件数据丢失的情 况,
尤其对于客户企业中一些新手。当然,这里所指的是彻底删除,即已经不能通过“回收 站”找回的情况,
比如使用“rm -rf”来删除数据。针对 Linux 下的 EXT 文件系统,可用的恢复工具有 debugfs、ext3grep、extundelete 等。
其中 extundelete 是一个开源的 Linux 数据 恢复工具,支持 ext3、ext4 文件系统。

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

下面将介绍使用 extundelete 工具如何恢复误删除的文件。

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

[root@localhost opt]# yum -y install e2fsprogs-devel e2fsprogs-libs
[root@localhost ~]# yum -y install wget
[root@localhost opt]# wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
[root@localhost opt]# yum -y install bzip2
[root@localhost opt]# tar xvf extundelete-0.2.4.tar.bz2
[root@localhost opt]# cd extundelete-0.2.4/
[root@localhost extundelete-0.2.4]# ./configure --prefix=/usr/local/extundelete && make && make install //将extundelete配置文件放到/usr/local/extundelete编译并且安装
cd /usr/local/extundelete/bin
ln -s /usr/local/extundelete/bin/* /usr/sbin/ == //给extundelete解压的文件建议软链接== extundelete的配置文件作为usr/sbin的软链接的源文件。extundelete 安装在/usr/local/extundelete/bin里面,搞个软连接,把他写到sbin那个目录里面

#####没有make 安装make####
make是gcc的编译器,一定要安装
1、安装:
yum -y install gcc automake autoconf libtool make

2、安装g++:
yum install gcc gcc-c++

2、模拟删除并执行恢复操作
虚拟机添加新硬盘,使用 fdisk 命令创建新分区,将其挂载到/data目录下,往该目录下新建一些文件或目录
fdisk -l
fdisk /dev/sdb
n
p
回车
回车
回车
p
w
新添加的5G硬盘,并且2个主分区,1个拓展分区,1个逻辑分区
将sdb5 ,进行格式化ext3文件系统,
挂载

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
extundelete /dev/sdb5 //查看磁盘的文件删除情况。因为常规删除只是删除文件名,没有删除节点号

也可以使用“extundelete /dev/sdb1 --inode 2”查看文件系统/dev/sdb1 下存在哪些文件,
具体的使用情况。其中–inode 2 代表从 i 节点为 2 的文件开始查看,一般文件系统格式化挂 载之后,
i 节点是从 2 开始的,2 代表该文件系统最开始的目录。

模拟误删除a b
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

二、 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 后面不能直接跟路径
下面通过一个案例来备份恢复 xfs 类型的文件。首先添加一款新硬盘并格式化为 xfs 类 型的文件系统,然后挂在到/date 目录下
[root@localhost /]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

mkfs -t xfs -f /dev/sdb5 /data //加-f 是强制格式
[root@localhost /]# cd /data/
[root@localhost data]# cp /etc/passwd ./ //将密码的内容复制到/data目录文件名是passwd
[root@localhost data]# mkdir test
[root@localhost data]# touch test/a
[root@localhost data]# yum -y install tree
[root@localhost data]# tree /data
/data
├── passwd
└── test
└── a

##使用xfsdump 命令备份整个分区##
yum install -y xfsdump
xfsdump -f /opt/dump_sdb1 /dev/sdb1
####交互信息###
please enter label for this dump session (timeout in 300 sec)
-> dump_sdb1 ####指定备份会话标签

please enter label for media in drive 0 (timeout in 300 sec)
-> sdb1 ###指定设备标签,就是对要备份的设备做一个描述

[root@localhost ~]# xfsdump -I ####查看备份内容信息-l 是大写i
file system 0:
fs id: c7e3b663-a22e-4f0f-b293-be5a0f80e457
session 0:
mount point: localhost.localdomain:/data
device: localhost.localdomain:/dev/sdb1
time: Tue Jun 23 00:56:44 2020
session label: “dump_sb”
session id: 26963e6a-fef3-42b4-b789-1e21ad390af7
level: 0
resumed: NO
subtree: NO
streams: 1
stream 0:
pathname: /opt/dump_sdb1
start: ino 67 offset 0
end: ino 70 offset 0
interrupted: NO
media files: 1
media file 0:
mfile index: 0
mfile type: data
mfile size: 24032
mfile start: ino 67 offset 0
mfile end: ino 70 offset 0
media label: “sdb1”
media id: 6aedd0e0-3e36-4bb4-b7ed-c489c73ea48c
xfsdump: Dump Status: SUCCESS

####删除之前创建的内容,模拟数据丢失###
[root@localhost ~]# cd /data/
[root@localhost data]# ls
passwd test
[root@localhost data]# rm -rf *
[root@localhost data]# ls

[root@localhost ~]# xfsrestore -f /opt/dump_sdb1 /data/ == ##解析xfsdump的备份标签dump_sdb1==
[root@localhost ~]# ls /date/ ##查看解析后,恢复的sdb1数据

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

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42099301/article/details/106923282