参考 http://wandiankafei.blog.51cto.com/10878910/1716201
方案1)现在我向大家介绍使用extundelete恢复文件(适合rhel6.X系统的ext4)
安装:
下载 extundelete-0.2.4.tar.bz2 wget http://netassist.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
tar -jxvf extundelete-0.2.4.tar.bz2
cd extundelete-0.2.4
./configure (这步出现错误,请看下文)
yum install e2fsprogs-devel-1.41.12-18.el6.x86_64.rpm
然后再次执行,成功
make && make install
恢复:
extundelete /dev/sda4 --inode 2 (看到你所删除的文件)
恢复单个目录:
extundelete /dev/sdb1 --restore-directory /mongodb ##mongodb是一个目录
恢复所有误删文件:
extundelete /dev/sdb1 --restore-all
恢复一个单个文件:
extundelete /dev/sdb1 --restore-file a.txt
方案2)使用lsof自带一个的神秘功能
原理:大多数与 lsof 相关的信息都存储于以进程的 PID 命名的目录中
假如由于误操作将/var/log/messages文件删除掉了,那么这时要将/var/log/messages文件恢复的方法
如下:
首先使用lsof来查看当前是否有进程打开/var/logmessages文件,如下:
# lsof |grep /var/log/messages
syslogd 1283 root 2w REG 3,3 5381017 1773647 /var/log/messages (deleted)
从 上面的信息可以看到 PID 1283(syslogd)打开文件的文件描述符为 2。同时还可以看到/var/log
/messages已经标记被删除了。
cat /proc/1283/fd/2 > /var/log/messages 恢复成功