http://hatemysql.com/
1.从/proc文件系统恢复数据
#lsof |grep -i delete
cat 11791 root 1w REG 253,0 94 1048589 /home/woqu/echo_red.sh (deleted)
#cp /proc/11791/fd/1 echo_red.sh
2.Extundelete工具恢复
查找误删除文件
通过extundelete可以查看哪些文件被删除了。在我们的模拟场景下,可以这样使用extundelete –inode 2 /dev/VolGroup/home查看/home分区下各个文件和目录的详细信息。这里/dev/VolGroup/home指的是/home对应的分区。对于ext系列的文件系统,编号为2的inode中包含了该分区下的各个文件和目录信息。输出信息如下:
[root@test1 /root]
#extundelete –inode 2 /dev/VolGroup/home
lost+found 11
mysql 262145
cdrom.repo 12
woqu 2883585
我们这里最关心的还是mysql目录的信息。这里我们知道mysql的Inode为262145。于是我们可以再次用extundelete –inode 来查看mysql目录的详细信息:
[root@test1 /root]
#extundelete –inode 262145 /dev/VolGroup/home
恢复误删除数据
extundelete可以通过–restore-inode将指定inode对应的文件恢复出来,也可以使用–restore-all将所有状态为已经Deleted的文件和目录恢复回来。restore-inode主要用于恢复单个文件;restore-all用于恢复所有的文件目录。另外,还有–restore-file,–restore-files,–restore-directory来恢复指定目录或者文件。
另外,如果你知道删除的时间,那么可以指定–after或者–before来指定误删除的时间。
恢复数据的时候,extundelete将在当前目录下新建RECOVERED_FILES文件夹,并把恢复出来的数据文件或者目录存放在该目录中。
比如,我们使用–restore-inode恢复数据,恢复264111号inode文件如下:
[root@test1 /root/RECOVERED_FILES]
#extundelete –restore-inode 264111 /dev/VolGroup/home
使用restore-all恢复的话,目录名和文件名都会恢复回来,你可以在当前目录的RECOVERED_FILES目录下找到对应的文件和目录如下: