常见的开源数据恢复工具有,debugfs、R-Linux、ext3grep、extundelete 等。
ext3grep 跟 extundelete 比较常用,其中 ext3grep 只支持 ext3 文件系统,extundelete 支持 ext3/ext4。
都是通过分析文件系统日志,解析出所有文件的 inode 信息,利用 inode 去查找所在 block ,利用 dd 备份出以删除的数据。
一、功能特点
支持双格式:支持ext3和ext4两种文件系统的分区恢复。
恢复能力强:基于整个磁盘的恢复功能较为强大,但基于目录和文件的恢复功能相对较弱。
恢复文件存储:执行恢复操作后,会在当前目录下生成一个名为RECOVERED_FILES的目录,里面包含恢复出来的文件和文件夹。
二、使用注意事项
避免覆盖数据:在实际恢复过程中,切勿将extundelete安装到包含误删文件的硬盘上,以免覆盖需要恢复的数据。
卸载或只读挂载:在恢复前,应将需要恢复的分区卸载或挂载为只读模式,防止数据被意外覆盖。
数据恢复局限性:任何数据恢复工具都有其局限性,不能保证完全恢复所有数据,因此最好将备份作为数据恢复的主要手段。
三、安装方法
extundelete可以通过yum直接安装或通过源码编译安装。以下是两种安装方法的简要步骤:
1. yum直接安装
需要配置相应的仓库源(如EPEL源),然后使用yum命令安装:
yum install -y extundelete
2. 源码编译安装
下载extundelete的源码包(如extundelete-0.2.4.tar.bz2)。
解压源码包并进入解压后的目录。
安装必要的依赖包(如gcc、gcc-c++、e2fsprogs等)。
执行./configure、make和make install命令进行编译和安装。
四、使用方法
extundelete的使用主要通过命令行进行,其基本语法格式为:
extundelete [options] [--] device-file
其中,device-file是需要恢复的分区设备文件(如/dev/sda1)。常用的选项包括:
--superblock:显示指定分区的超级块信息。
--journal:显示分区的日志信息。
--after dtime:只恢复指定时间戳之后被删除的数据。
--before dtime:只恢复指定时间戳之前被删除的数据。
--restore-inode ino[,ino,...]:恢复一个或多个指定inode号的文件。
--restore-file 'filename':恢复指定的被删除文件。
--restore-directory 'dir-name':恢复指定的目录。
--restore-all:恢复分区里所有被删除的数据。
五、示例
假设要恢复/dev/sda1分区中在特定时间后删除的所有文件,可以使用以下命令:
extundelete /dev/sda1 --after 1234567890 --restore-all
其中,1234567890是删除操作发生时间的时间戳。