一、extundelete介绍
extundelete是基于Linux的一个数据恢复工具,它通过分析文件系统的日志,解析出所有文件的inode信息,从而可以恢复Linux下主流的ext3,ext4文件系统下被误删除的文件。
1.extundelete的文件恢复工具,该工具最给力的一点就是支持ext3/ext4双格式分区恢复。
2. 在实际线上恢复过程中,切勿将extundelete安装到你误删的文件所在硬盘,这样会有一定几率将需要恢复的数据彻底覆盖。
3. extundelete还是有很大的不完整性,基于整个磁盘的恢复功能较为强大,基于目录和文件的恢复还不够强大。
4. extundelete执行完毕后在当前目录生产一个RECOVERED_FILES目录,里面即是恢复出来的文件,还包括文件夹。
5.任何的文件恢复工具,在使用前,均要将要恢复的分区卸载或挂载为只读,防止数据被覆盖使用。
#umount /dev/partition
#mount -o remount,ro /dev/partition
6.保持良好的习惯,绝对比恢复数据要更简单。
extundelete恢复数据的过程:
在数据被误删除后,第一时间要做的就是卸载被删除数据所在的分区,如果是根分区的数据遭到误删,就需要将系统进入单用户模式,并且将根分区以只读模式挂载。这样做的原因很简单,因为将文件删除后,仅仅是将文件的inode节点中的扇区指针清零,实际文件还储存在磁盘上,如果磁盘继续以读写模式挂载,这些已删除的文件的数据块就可能被操作系统重新分配出去,在这些数据库被新的数据覆盖后,这些数据就真的丢失了,恢复工具也无力回天。所以!以只读模式挂载磁盘可以尽量降低数据库中数据被覆盖的风险,以提高恢复数据成功的比例。
===========================================================================
二、安装
Centos系统,在安装extundelete之前需要安装e2fsprogs,e2fsprogs-libs,e2fsprogs-devel。
这里用:yum install e2fsprogs e2fsprogs-libs e2fsprogs-devel 来完成安装。
#wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
#tar -axf extundelete-0.2.4.tar.bz2 -C /usr/local/src
#cd /usr/local/src/extundelete-0.2.4
#./configure
#make
#make install
三、使用及命令
1. umount或者read only 分区
# umount /dev/partition
# mount -o remount,ro /dev/partition
2.切换到存储恢复文件的目录
#cd $dir
3.命令
Usage: extundelete [options] [--] device-file
Options:
--superblock 打印指定分区的超级块信息。如不加任何的参数,此选项是默认的.
#extundelete --superblock /dev/sda3 <---> extundelete /dev/sda1
--journal 显示块的日志信息,同--superblock。
#extundelete --journal /dev/sda1
--after dtime 只恢复指定时间【dtime】(时间戳)之后,被删除的数据假如删除的时间大概是2011-7-26 14:30
#date -d "Jul 26 14:30" +%s -->得出秒数 1234567890
恢复此时间后删除的所有文件
#extundelete /dev/sdb1 --after 1234567890 --restore-all
--before dtime 只恢复指定时间【dtime】(时间戳)之前,被删除的数据 #extundelete /dev/sda/ --before 1381786259 --restore-all
Actions:
--inode ino 显示某分区inode为x的信息,一般是查看该分区下所有的文件.
#extundelete --inode 2 /dev/sda1
--block blk 显示某分区block为x的信息.
--restore-inode ino[,ino,...] 恢复一个或多个指定inode号的文件,该恢复的文件,
保存在当前目录下的RECOVERED_FILES里,文件名为【file.$inode】
#extundelete /dev/sda1 --restore-inode 13,14
--restore-file 'filename' 恢复指定的文件(被删除的),文件位于当前目录下的RECOVERED_FILES/$filename,文件名还是原来的
#extundelete /dev/sda1 --restore-file initramfs-2.6.32-358.el6.x86_64.img
--restore-files 'read_filename' 恢复指定的文件(真实存在的)中的内容,
文件位于当前目录下的RECOVERED_FILES/$filename,文件名还是原来的
# cat test_restore.txt(结尾不可有多余的空格)
如文档里的内容如下:
System.map-2.6.32-358.el6.x86_64
config-2.6.32-358.el6.x86_64
……
# extundelete /dev/sda1 --restore-files test_restore.txt
--restore-directory 'dir-name' 恢复指定的目录,文件位于当前目录下的RECOVERED_FILES/$dir-name,文件名还是原来的
# extundelete /dev/sda1 --restore-files grub
--restore-all 恢复某分区里所有被删除的数据,文件名还是原来的
# extundelete /dev/sda1 --restore-all
1. 模拟数据误删环境:
创建一个新的分区后,挂载到一个目录下,往该目录下cp一些文件或者目录,校验个问句的md5值,然后删除该目录下的文件,用来模拟实验环境。
2. 卸载磁盘分区,并通过执行extundelete命令查询/dev/sdb1分区可恢复的数据信息:
# extundelete /dev/sdb1 --inode 2
根据输出信息,标记为Deleted状态的是已经删除的文件或目录。同时还可以看到已删除文件的inode值,接下来就可以恢复文件了。
3. 恢复单个文件:
extundelete /dev/sdb1 --restore-file passwd
会在当前目录下生成一个RECOVERED_FILES目录,里面保存已经恢复的文件。
4. 恢复单个目录:
#extundelete /dev/sdb1 --restore-directory /mongodb
恢复所有误删文件:
#extundelete /dev/sdb1 --restore-all
extundelete还可以实现恢复某个时间段的数据。可以通过“--after”和“--before”参数实现!
这里有一个视频,也可以看这里。
http://v.youku.com/v_show/id_XMTcwNzY3OTgwMA==.html
extundelete是基于Linux的一个数据恢复工具,它通过分析文件系统的日志,解析出所有文件的inode信息,从而可以恢复Linux下主流的ext3,ext4文件系统下被误删除的文件。
1.extundelete的文件恢复工具,该工具最给力的一点就是支持ext3/ext4双格式分区恢复。
2. 在实际线上恢复过程中,切勿将extundelete安装到你误删的文件所在硬盘,这样会有一定几率将需要恢复的数据彻底覆盖。
3. extundelete还是有很大的不完整性,基于整个磁盘的恢复功能较为强大,基于目录和文件的恢复还不够强大。
4. extundelete执行完毕后在当前目录生产一个RECOVERED_FILES目录,里面即是恢复出来的文件,还包括文件夹。
5.任何的文件恢复工具,在使用前,均要将要恢复的分区卸载或挂载为只读,防止数据被覆盖使用。
#umount /dev/partition
#mount -o remount,ro /dev/partition
6.保持良好的习惯,绝对比恢复数据要更简单。
extundelete恢复数据的过程:
在数据被误删除后,第一时间要做的就是卸载被删除数据所在的分区,如果是根分区的数据遭到误删,就需要将系统进入单用户模式,并且将根分区以只读模式挂载。这样做的原因很简单,因为将文件删除后,仅仅是将文件的inode节点中的扇区指针清零,实际文件还储存在磁盘上,如果磁盘继续以读写模式挂载,这些已删除的文件的数据块就可能被操作系统重新分配出去,在这些数据库被新的数据覆盖后,这些数据就真的丢失了,恢复工具也无力回天。所以!以只读模式挂载磁盘可以尽量降低数据库中数据被覆盖的风险,以提高恢复数据成功的比例。
===========================================================================
二、安装
Centos系统,在安装extundelete之前需要安装e2fsprogs,e2fsprogs-libs,e2fsprogs-devel。
这里用:yum install e2fsprogs e2fsprogs-libs e2fsprogs-devel 来完成安装。
#wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
#tar -axf extundelete-0.2.4.tar.bz2 -C /usr/local/src
#cd /usr/local/src/extundelete-0.2.4
#./configure
#make
#make install
三、使用及命令
1. umount或者read only 分区
# umount /dev/partition
# mount -o remount,ro /dev/partition
2.切换到存储恢复文件的目录
#cd $dir
3.命令
Usage: extundelete [options] [--] device-file
Options:
--superblock 打印指定分区的超级块信息。如不加任何的参数,此选项是默认的.
#extundelete --superblock /dev/sda3 <---> extundelete /dev/sda1
--journal 显示块的日志信息,同--superblock。
#extundelete --journal /dev/sda1
--after dtime 只恢复指定时间【dtime】(时间戳)之后,被删除的数据假如删除的时间大概是2011-7-26 14:30
#date -d "Jul 26 14:30" +%s -->得出秒数 1234567890
恢复此时间后删除的所有文件
#extundelete /dev/sdb1 --after 1234567890 --restore-all
--before dtime 只恢复指定时间【dtime】(时间戳)之前,被删除的数据 #extundelete /dev/sda/ --before 1381786259 --restore-all
Actions:
--inode ino 显示某分区inode为x的信息,一般是查看该分区下所有的文件.
#extundelete --inode 2 /dev/sda1
--block blk 显示某分区block为x的信息.
--restore-inode ino[,ino,...] 恢复一个或多个指定inode号的文件,该恢复的文件,
保存在当前目录下的RECOVERED_FILES里,文件名为【file.$inode】
#extundelete /dev/sda1 --restore-inode 13,14
--restore-file 'filename' 恢复指定的文件(被删除的),文件位于当前目录下的RECOVERED_FILES/$filename,文件名还是原来的
#extundelete /dev/sda1 --restore-file initramfs-2.6.32-358.el6.x86_64.img
--restore-files 'read_filename' 恢复指定的文件(真实存在的)中的内容,
文件位于当前目录下的RECOVERED_FILES/$filename,文件名还是原来的
# cat test_restore.txt(结尾不可有多余的空格)
如文档里的内容如下:
System.map-2.6.32-358.el6.x86_64
config-2.6.32-358.el6.x86_64
……
# extundelete /dev/sda1 --restore-files test_restore.txt
--restore-directory 'dir-name' 恢复指定的目录,文件位于当前目录下的RECOVERED_FILES/$dir-name,文件名还是原来的
# extundelete /dev/sda1 --restore-files grub
--restore-all 恢复某分区里所有被删除的数据,文件名还是原来的
# extundelete /dev/sda1 --restore-all
1. 模拟数据误删环境:
创建一个新的分区后,挂载到一个目录下,往该目录下cp一些文件或者目录,校验个问句的md5值,然后删除该目录下的文件,用来模拟实验环境。
2. 卸载磁盘分区,并通过执行extundelete命令查询/dev/sdb1分区可恢复的数据信息:
# extundelete /dev/sdb1 --inode 2
根据输出信息,标记为Deleted状态的是已经删除的文件或目录。同时还可以看到已删除文件的inode值,接下来就可以恢复文件了。
3. 恢复单个文件:
extundelete /dev/sdb1 --restore-file passwd
会在当前目录下生成一个RECOVERED_FILES目录,里面保存已经恢复的文件。
4. 恢复单个目录:
#extundelete /dev/sdb1 --restore-directory /mongodb
恢复所有误删文件:
#extundelete /dev/sdb1 --restore-all
extundelete还可以实现恢复某个时间段的数据。可以通过“--after”和“--before”参数实现!
这里有一个视频,也可以看这里。
http://v.youku.com/v_show/id_XMTcwNzY3OTgwMA==.html