天天看点

linux系统找回数据,Linux系统上面误删的数据找回

**一、背景

突发事件,应用上传的数据被程序自动删掉了,可悲的是还没有数据备份,数据是放在系统的 /data/webapps/xxxx/upload 目录下面,可把我们急坏了,之前又没有做过数据恢复的测试,然后我找到了一款数据恢复的软件,成功把删除的大部分数据找回来了,我的数据恢复过程如下。

二、安装恢复软件

1、epel 仓库安装

如果我们的源里面添加了 epel 仓库的话,我们可以直接使用下面的命令安装。

yum install extundelete -y

2、源码编译安装

linux系统找回数据,Linux系统上面误删的数据找回

三、删除数据查找

因为我的数据路径比较深,所以我们需要一步步查找,可以先从根分区 inode 查找

linux系统找回数据,Linux系统上面误删的数据找回

我们会看到 weapps 目录的inode

linux系统找回数据,Linux系统上面误删的数据找回

我们看到项目的 inode

linux系统找回数据,Linux系统上面误删的数据找回

我们找到了最终删除数据的目录 upload

linux系统找回数据,Linux系统上面误删的数据找回

我们可以看到标称的 Deleted,这些数据就是我们要进行恢复的数据。

四、数据恢复

那我们就恢复指定目录,以当前分区为根分区进行路径设定,项目名进行掩盖

linux系统找回数据,Linux系统上面误删的数据找回

因为磁盘数据一直在读写,所以有些文件之前的 inode 已经被重新分配了,导致部分数据无法恢复,数据最后会告诉我们有多少文件没有回复,但是大部分数据我们已经恢复了,这就是很重要的事情了。

那我们查看一下回复的数据吧,软件会在当前目录生成一个目录 RECOVERED_FILES 里面就是我们恢复的数据。

linux系统找回数据,Linux系统上面误删的数据找回

恢复全部数据可以使用命令

linux系统找回数据,Linux系统上面误删的数据找回

使用方法

extundelete --help

linux系统找回数据,Linux系统上面误删的数据找回

在数据删除之后,首先要卸载被删除数据所在的磁盘或是分区,如果是系统根分区遭到误删除,就需要进入单用户模式下,将根分区以只读的方式挂载。

原因:因为文件删除之后,仅仅是将文件的inode节点中的扇区指针清零,实际上文件还存在磁盘上面,如果磁盘以读写方式挂载,这些删除的数据块可能会被系统从新分配出去,这些数据块被覆盖之后,这些数据就真的丢失了,所以以只读的方式挂载,尽可能避免数据被覆盖。**