1.首先到官网下载 extundelete 的 包 extundelete-0.2.4.tar.bz2
地址为 https://sourceforge.net/projects/extundelete/files/latest/download 这个版本已经是最终版了
2.下载完上传到你的服务器并进行解压,解压命令为
tar -jxvf extundelete-0.2.4.tar.bz2
然后进入 extundelete-0.2.4 文件夹,执行 ./configure 进行配置安装
如果你执行的时候出现如下问题,那么你需要安装一下依赖库
安装一下这个依赖 yum install e2fsprogs-devel
然后再次执行即可成功,成功再执行 make , 之后再执行 make install 到此为止,extundelete 工具就安装完成了
安装完会在 /usr/local/bin 和当前的 src/ 下生成一个 extundelete 执行文件
一些基本的操作命令可参考 官网或者 https://blog.csdn.net/wll_1017/article/details/50543841
然后就来进行一个实际操作吧
a. 在 /opt 建立一个 test 文件夹,并创建一个 zxc.txt 文件夹内容如下
记得还需要把 test 目录设置为 ext3 或者 ext4 类型,不然无法进行恢复
命令为 mkfs.ext4 /opt/test/ 如果是3,把数字改为3即可
然后来模拟删除该文本 rm -rf zxc.txt
当发现误删的情况下,第一件事就是卸载该分区,不如空间被重新分配的话就没法恢复了
umount /opt/test 把该目录改为只读模式 --- 这个我也不清楚,具体请自行百度,不改也可以,只要能确定你在恢复的
时候该目录不会被别人修改到就可以
然后就是开始恢复了,这里我只介绍已 inode 恢复的方法,其他的可以参考上面的连接,写的很详细
先 df -h 查看一下当前的目录挂在哪里,我的只有一个分区, 就是在 /dev/vda1 下
输入 extundelete --inode 2 /dev/vda1 , 直接敲入即可 , 2是因为是最底层的节点就是2
可以看到我的opt 目录的节点为 917507
然后再输入 extundelete --inode 917507 /dev/vda1 查看 /opt 下面目录的 innode 节点
然后是再次到 1320257 下面查看下面的节点数据
可以看到右边写着删除的就是你刚刚remove 掉的内容
当然,有人会说这样一层一层进来很麻烦,其实liunx 提供了命令可以查看到某一个文件夹的inode编号,具体为
ls -id /opt/test/
可以看到 indoe 节点跟刚才是一样的,只不过那个是 工具提供的,这是 linux 自带的
刚刚已看到被删除的文件的 inode 编号,就下来就可以用工具来恢复了
extundelete --restore-inode 1320260 /dev/vda1
中间那段提问是因为我没有卸载分区的原因,不影响
当执行完之后会在当前目录生成一个 RECOVERED_FILES 文件夹,下面就是你的文件。cat一下
发现跟原来是一样的,那就正常了,注意,有可能是以前引用的指针,所以尽可能在 rm -rf 前备份一下数据
有一个重点,如果你再次进行恢复可能会报错,会报空间已重新分配的错误,所以尽量只恢复一次吧
其实网上已很多关于这个的文章,我只是自己记录一下,平时还是尽量避免不小心操作到 rm-rf 这种命令!
https://www.cnblogs.com/wangxiaoqiangs/p/5630288.html
作者引申的几个问题不错
## 发现 httpd 、pcre 、siege 的都被分配出去了...,现在恢复不出来的就永远没有了..
## 所以,千万记住:万一误删除数据了,一定要第一时间将数据所在磁盘卸载或挂载为只读分区,防止写入文件 inode 被重新分配。
## 如果误删的是根分区的数据,那么立即进去单用户模式,将根分区只读挂载。
## 又引申出一个问题,做系统分区的时候,最好不要只分一个根分区,像这样的情况很难办...
## 第二,数据恢复软件事先装好吧..
## 第三,删除数据时,先将要删除的数据移动到 /tmp(单独分区),然后删除或脚本定期删除
## 第四,做好数据备份。
## 最后,敲慢点 !!!