[整理人:张子萌 2011-03-14]
linux管理员不小心rm了数据,会很郁闷,所以需要数据恢复。我记录个人的恢复实验结果。如果可以把硬盘拿下里挂载windows上可以试试Raise Data Recovery for Ext2/Ext3/Ext4、r-linux工具,其它工具也很多,但是收费的居多。用windows恢复后容易造成使用权限错误等问题,所以不能直接恢复到linux盘上使用。据说winpe里也可以用,但是我没有做实验,毕竟用winpe在服务器上也挺怪的。主要实验一下在linux上实际操作。TestDisk、PhotoRec、ext3grep。TestDisk主要用来恢复损坏的分区以及拯救无法引导的磁盘。PhotoRec 主要用于恢复损坏的数据文件和文档等。Ext3grep恢复大部分数据文件。
PhotoRec 下载地址
http://www.cgsecurity.org/wiki/PhotoRec
ext3grep下载地址
http://ext3grep.googlecode.com/files/ext3grep-0.10.2.tar.gz
软件主站
http://www.xs4all.nl/~carlo17/howto/undelete_ext3.html
先看ext3grep效果,我的分区如下
在program下随便放了一个文档pdf。并且见了3个目录abc,在a目录下放了一个txt文件。
# rm -rf 2011.pdf a/
把a目录和2011.pdf删除,删除完毕卸载/program分区,准备测试恢复。
首先安装或升级一下e2fsprogs、e2fslibs库,在CentOS中安装e2fsprogs库。如果是Ubuntu需要安装两个库,命令sudo apt-get install e2fsprogs e2fslibs-dev。我的实验环境是Centos。(任何恢复都需要安装此库)
#yum install –y e2fsprogs
# wget http://ext3grep.googlecode.com/files/ext3grep-0.10.2.tar.gz
# tar zxvf ext3grep-0.10.2.tar.gz
# cd ext3grep-0.10.2
# ./configure
# make && make install
ext3grep主要参数:
–print 打印块、inode和所有信息
–ls 打印目录、过滤信息
–inode 从某个indoechazhao
–block 从某个块查找
–group 只找某个组
–after 找在某点时间后删除的数据
–before 找在某点时间前删除的数据
–restore-file 恢复文件到某个目录
–restore-all 恢复所有删除,删除的数据会在当前的RESTORED_FILES目录中
开始从第二个inode扫描删除的文件
# ext3grep /dev/sda4 –ls –inode 2
扫描完成如下图
在第四列为inode值,第五列中写有D的就是被删除的文件。
使用一下命令我看看a目录下有什么东西,a目录的inode值为75777
# # ext3grep /dev/sda4 –ls –deteled –inode 75777
# ext3grep /dev/sda4 –restore-file a/123.txt
看到Restoring 已经恢复成功,查看123.txt文件文件内容没有问题,但是pdf的没有成功,不知道为什么。又测试删除mysql数据库的数据,经过恢复的数据也可以使用。总体说效果挺好。
然后试试PhotoRec,官方说明能恢复格式如下:
– RIFF audio/video (.avi/.wav)
– BMP bitmap (.bmp)
– bzip2 compressed data (.bz2)
– Source code written in C (.c)
– Canon Raw picture (.crw)
– Canon catalog (.ctg)
– FAT subdirectory
– Microsoft Office Document (.doc)
– Nikon dsc (.dsc)
– HTML page (.html)
– JPEG picture (.jpg)
– MOV video (.mov)
– MP3 audio (MPEG ADTS, layer III, v1) (.mp3)
– Moving Picture Experts Group video (.mpg)
– Minolta Raw picture (.mrw)
– Olympus Raw Format picture (.orf)
– Portable Document Format (.pdf)
– Perl script (.pl)
– Portable Network Graphics (.png)
– Raw Fujifilm picture (.raf)
– Contax picture (.raw)
– Rollei picture (.rdc)
– Rich Text Format (.rtf)
– Shell script (.sh)
– Tar archive (.tar )
– Tag Image File Format (.tiff)
– Microsoft ASF (.wma)
– Sigma/Foveon X3 raw picture (.x3f)
– zip archive (.zip)
支持的磁盘格式如下:
– DOS/Windows FAT12, FAT16 and FAT32
– NTFS ( Windows NT/2K/XP )
– Linux Ext2 and Ext3
– BeFS ( BeOS )
– BSD disklabel ( FreeBSD/OpenBSD/NetBSD )
– CramFS (Compressed File System)
– HFS and HFS+, Hierarchical File System
– JFS, IBM’s Journaled File System
– Linux Raid
– Linux Swap (versions 1 and 2)
– LVM and LVM2, Linux Logical Volume Manager
– Netware NSS
– ReiserFS 3.5, 3.6 and 4
– Sun Solaris i386 disklabel
– UFS and UFS2 (Sun/BSD/…)
– XFS, SGI’s Journaled File System
试试看
# wget http://www.cgsecurity.org/testdisk-6.11.3.linux26.tar.bz2
# bunzip2 testdisk-6.11.3.linux26.tar.bz2
# tar xvf testdisk-6.11.3.linux26.tar
# cd /root/testdisk-6.11.3/linux
# ./testdisk_static
英文提示很简。测试了一下图片格式恢复没有问题,其它格式没有试,但是名称都变成索引名了,有点不方便。
还存在一个问题就是ext4格式。ext4在rehdat5中已经支持,但是需要安装e4fsprogs,在redhat6中已经是默认安装,所以将来使用ext4的几率也很大。Ext3grep工具在ext4下已经无能为力,所以需要其它工具的支持。上网上找找是否会有ext4grep,发现了http://tjworld.net/wiki/Linux/Ext4Undelete,没有搞清楚。
介绍较多的是extundelete。
extundelete的下载地址
http://extundelete.sourceforge.net/
首先安装e2fsprogs和e2fslibs,然后编译
# cd extundelete-0.2.0
# ./configure
# make
不安装了直接用
#cd src
# /extundelete /dev/sda9 –restore-all
应该是我系统内核版本太低,虽然支持ext4,但软件恢复却没有成功。内核2.6.28以上的应该没有问题。Fedora上有人测试过没有问题,redhat和centos就应该没有问题。
试试PhotoRec是否可以恢复ext4的盘。步骤抓图如下:
启动
选择磁盘
选择好分区类型
选择要恢复的盘
不知道为什么支持了,和介绍里说的不一样,选第一项
选第一项
选择恢复后的路径,直接点y,保存到当前目录的recup_dir.1目录中
照目前看txt等文本类和图片类的恢复也没有问题,但是只能靠grep在去找那个是需要的文件了。
经验总结:
使用rm需要格外小心(会出人命的)。在不小心删除后,最好及时卸载分区,避免数据覆盖写入。如果必须挂载,可以使用只读模式。
发表评论