Linux下恢复误删的文件

昨天朋友写了个node.js脚本,用于同步多服务器的web文件,后来在自己服务器上测试的时候失败了N次,一怒之下就rm掉了。

删完之后,才发现了。。修复的办法。 可是脚本已经灰飞烟灭了   接近五个小时调试瞬间打了水漂。

于是就找了下linux下恢复文件的方法。试了好几个都没啥效果,直到发现了这个神器:extundelete

下面就来演示下安装使用的方法,带给手贱党们的福音。

系统环境:centos 7

一、安装extundelete的N种方法(任选其一)

1.直接安装法

yum -y install epel-release  #安装epel第三方源
yum -y install extundelete

然后就安装成功了,试一下命令:

extundelete -v
#回显如下:
extundelete version 0.2.4
libext2fs version 1.42.13
Processor is little endian

2.编译安装方法

yum -y install wget
wget  http://zy-res.oss-cn-hangzhou.aliyuncs.com/server/extundelete-0.2.4.tar.bz2
yum -y install  bzip2  e2fsprogs-devel  e2fsprogs  gcc-c++ make
tar -xvjf extundelete-0.2.4.tar.bz2
cd extundelete-0.2.4 ./configure
make && make install

一样,试一下 extundelete -v 命令,有回显表示安装成功。

二、恢复文件

如图,在我服务器的 /root目录下有 wkmdoubi 这个文件夹,文件夹内有 wkmdoubi.shwkmdoubi.log 这两个文件

image.png

直接删除掉 wkmdoubi 这个文件夹。

image.png

好了接下来演示如何恢复 wkmdoubi.shwkmdoubi.log 这两个文件

1.查看我们主分区挂载的路径:

df -lh

如图, /dev/vda1是主分区路径

image.png

2.找到被删除的文件:

extundelete /dev/vda1 --inode 2

有提示按Y即可。

如图我们看到root目录的编号为 131073

image.png

接下来进入 root目录:

extundelete /dev/vda1 --inode 131073

如图我们看到了wkmdoubi这个文件夹,编号是262913,状态是Deleted

image.png

3.恢复文件/文件夹

extundelete /dev/vda1 --restore-directory /root/wkmdoubi/

后面的路径就是原来被删掉文件的路径。

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

完成后会在当前目录生成一个目录 RECOVERED_FILES 里面就是我们恢复的数据。如图,这两个文件已经成功恢复回来了

image.png


4.其他

要恢复全部文件可以使用如下命令:

extundelete /dev/sda5 --restore-all

命令参考如下: extundelete –help

其中,参数(options)有:
--version, -[vV],显示软件版本号。
--help,显示软件帮助信息。
--superblock,显示超级块信息。
--journal,显示日志信息。
--after dtime,时间参数,表示在某段时间之后被删的文件或目录。
--before dtime,时间参数,表示在某段时间之前被删的文件或目录。
动作(action)有:
--inode ino,显示节点“ino”的信息。
--block blk,显示数据块“blk”的信息。
--restore-inode ino[,ino,...],恢复命令参数,表示恢复节点“ino”的文件,恢复的文件会自动放在当前目录下的RESTORED_FILES文件夹中,使用节点编号作为扩展名。
--restore-file 'path',恢复命令参数,表示将恢复指定路径的文件,并把恢复的文件放在当前目录下的RECOVERED_FILES目录中。
--restore-files 'path',恢复命令参数,表示将恢复在路径中已列出的所有文件。
--restore-all,恢复命令参数,表示将尝试恢复所有目录和文件。
-j journal,表示从已经命名的文件中读取扩展日志。
-b blocknumber,表示使用之前备份的超级块来打开文件系统,一般用于查看现有超级块是不是当前所要的文件。
-B blocksize,通过指定数据块大小来打开文件系统,一般用于查看已经知道大小的文件。

评论

目前评论:0   

点击加载更多评