距离上一次更新该文章已经过了 652 天,文章所描述的內容可能已经发生变化,请留意。
当意识到误删除文件后,切忌千万不要再频繁写入了,否则你的数据恢复的数量将会很少。 而我们要做的是,第一时间把服务器上的服务全部停掉,直接killall 进程名 或者 kill -9 pid 。 然后把误删除文件所在分区,重新挂载成ro,只读的 (mount -o ro /dev/sdb2 /data/)。
然后我们需要去下载和安装一个工具叫做 extundelete
1.安装依赖包
# yum install e2fsprogs* -y
2.下载并安装extundelete
shell1
2
3
4
5
6
7wget https://sourceforge.net/projects/extundelete/files/extundelete/0.2.4/extundelete-0.2.4.tar.bz2/download?use_mirror=jaist
tar -jxvf extundelete-0.2.4.tar.bz2
cd extundelete-0.2.4
./configure --prefix=/usr/local/extundelete
如果出现configure: error: C++ compiler cannot create executables,执行下面步骤
yum install gcc gcc-c++ gcc-g77
make && make install3.验证是否安装成功
shell1
2
3
4
5
6
7cd /usr/local/extundelete/bin
./extundelete -v
---------------------
extundelete version 0.2.4
libext2fs version 1.41.12
Processor is little endian.
---------------------
假如我们误删除文件所在分区为/dev/sdb2 (必须写分区[df查看],不能写具体路径)
恢复步骤如下:
- 可以扫描哪些文件被删除了
/usr/local/extundelete/bin/extundelete /dev/sdb2 --inode 2
- 假如我们有一个文件叫做1.txt被删除了。 那么恢复它的命令为:
/usr/local/extundelete/bin/extundelete --restore-file 1.txt /dev/sdb2
被恢复的文件在 当前目录下的 RECOVERED_FILES/ 目录 ,可以看到有1.txtls ./RECOVERED_FILES/
而想恢复整个分区上的文件可以这样:
/usr/local/extundelete/bin/extundelete --restore-all /dev/sdb2
恢复后的文件也是在 ./RECOVERED_FILES/ 下,能否恢复就看你的运气好不好了。
shell
1 | 当然后续工作还有: |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 小五的个人杂货铺!