如何使用 Linux 文件恢复工具

怎样使用Linux文件恢复工具,相信好多没有经验的人对此束手无策,因此本文总结了问题出现的缘由和解决方式,通过这篇文章希望你能解决这个问题。

Linux系统管理员守则中有那么一条:“慎用rm-rf命令,除非你晓得此命令所带来的后果“,不过Linux下删掉文件并不是真实的删掉c盘分区中的文件,而是将文件的inode节点中的磁道表针去除,同时释放那些数据对应的数据块,当释放的数据块被系统重新分配时,这些被删掉的数据都会被覆盖,所以删掉除数据后,应马上卸载文件所在的分区。之后使用相关工具进行恢复。以Ubuntu12.04平台为例介介绍四个(foremost、extundelete、testdisk和phtorec)常用的Linux删掉文件恢复工具的使用技巧。

Linux文件恢复的原理

inode和block

首先简单介绍一下Linux文件系统的最基本单元:inode。inode译成英文就是索引节点,每位储存设备(比如硬碟)或储存设备的分区被低格为文件系统后,应当有两部分,一部分是inode,另一部分是block,block是拿来储存数据用的。而inode呢,就是拿来储存这种数据的信息,这种信息包括文件大小、属主、归属的用户组、读写权限等。inode为每位文件进行信息索引,所以就有了inode的数值。linux操作系统下可以使用ls–id命令来查看文件或则目录的inode值,通常”root”目录的inode值为2,一个分区挂载到一个目录下时,这个”root”目录的inode值为2。

# mount /dev/sdb2 /tmp  # ls -id /tmp  2 /tmp

文件恢复的原理

本文要介绍的命令是通过文件系统的inode值(通常是2)来获取文件系统信息。在ext3和ext4文件系统中,每位文件都是通过inode来描述其数据储存的具体位置,当文件被删掉之后,inode的数据表针部份被清零,文件目录区没有太多变化。文件的读写都是通过inode来实现,当inode数据表针被清零之后linux lost found 恢复,虽然文件内容还在,也没有办法把文件内容组合下来。当ext3和ext4文件系统中的元数据metadata发生变化时,相应的元数据metadata在日志文件会有一份拷贝。例如一个文件被删掉了,它的inode信息会在日志文件中先保存一份,之后把要删掉文件inode相关信息清零。这个日志文件是循环使用的,当操作过多时,删掉的文件的inode日志记录会被新的数据替换,这就彻底失去了按照inode寻回数据的机会了。假如是大量文件的删掉,这个日志文件会被反复循环借助多次,只留给***删掉的这些文件的恢复机会。

使用命令行工具恢复文件

foremost和extundelete简介

formost是一个基于文件头和尾部信息以及文件的内建数据结构恢复文件的命令行工具。这个过程一般称作数据挖掘(datacarvubg)。formost可以剖析由dd、Safeback、Encase等生成的镜像文件,也可以直接剖析驱动器。文件头和尾可以通过配置文件设置,也可以通过命令行开关使用formost内建的文件类型。formost最初是由德国陆军非常调查室(AirForceOfficeofSpecialInvestigations)和信息系统安全研究中心(TheCenterforInformationSystemsSecurityStudiesandResearch)开发的,现今使用GPL许可。Foremost支持恢复如下格式:avi,bmp,dll,doc,exe,gif,htm,jar,jpg,mbd,mov,mpg,pdf,png,ppt,rar,rif,sdw,sx,sxc,sxi,sxw,vis,wav,wmv,xls,zip。

针对Linux下的ext文件系统来说,常用的Linux文件删掉恢复工具有debugfs、ext3grep、extundelete等。extundelete是一个开源的数据恢复工具,支持ext3、ext4文件系统,其官方站点坐落,目前***稳定版本为0.2.0。

前面介绍的两种命令行工具foremost和extundelete两者相比linux虚拟机,foremost支持的文件系统比较多(包括ext2、ext3、vfat、NTFS、ufs、jfs等)和extundelete支持的文件系统较少(ext3、ext4)文件系统。不过foremost只能支持恢复特定格式的文件。

使用foremost

首先安装软件包:

#apt-get install foremost

其它Linux发行版用户可以在下载源代码编译安装。下边瞧瞧使用技巧。

恢复单个类型文件

笔者删掉一个USB(/dev/sdba1)储存器中一个png文件之后使用formost恢复。

linux lost found 恢复_恢复视力加盟_恢复手机日历

#rm -f /dev/sdb1/photo1.png  #foremost -t png -i /dev/sdb1

恢复完成后会在当前目录构建一个output目录,在output目录下会构建png子目录下会包括所有可以恢复的png格式的文件。

须要说明的是png子目录下会包括的png格式的文件名称早已改变,另外output目录下的audit.txt文件是恢复文件列表。

恢复多个类型文件

#foremost -v -T -t doc,pdf,jpg,gif -i /dev/sda6 -o /media/disk/Recover

恢复完成后会在当前目录构建一个output目录linux培训学校,在output目录下会构建四个子目录(/doc,/pdf,/jpg,/gif),分别包括四种类型文件。另外output目录下的audit.txt文件是恢复文件列表。

使用extundelete

首先安装软件包:

#apt-get install extundelete

其它Linux发行版用户可以在下载源代码编译安装。下载安装extundelete之前要安装两个软件包e2fsprogs和e2fslibs。下边瞧瞧使用方式

模拟数据误删掉环境

这儿我们使用一个分区/dev/sdd1挂在在/backupdate上,构建一个测试目录/delete并构建一文件:del1.txt。

# mkdir –p /backupdate/deldate  # mkfs.ext4 /dev/sdd1  # mount /dev/sdd1 /backupdate  #cd /backupdate/deldate  # touch del1.txt  # echo " test 1" > del1.txt

获取文件校准码:

# md5sum del1.txt                             66fb6627dbaa37721048e4549db3224d  del1.txt

删掉文件:

# rm -fr /backupdate/*

卸载文件系统或则挂载为只读:

# umount /backupdate

查询恢复数据信息,注意这儿的--inode2这儿会扫描分区:

# extundelete /dev/sdd1 --inode 2  .....  File name                                       | Inode number | Deleted status  Directory block 8657:  .                                                 2  ..                                                2  lost+found                                        11             Deleted  del1.txt                                              12             Deleted

恢复手机日历_linux lost found 恢复_恢复视力加盟

里面标记为Deleted是早已删掉的文件或目录。

开始恢复文件

默认恢复到当前目录下的RECOVERED_FILES目录中去。

# extundelete /dev/sdd1 --restore-file del1.txt

假如恢复一个目录:

# extundelete /dev/sdd1 --restore-directory /backupdate/deldate

恢复所有文件:

# extundelete /dev/sdd1 --restore-all

获取恢复文件校准码,对比测量是否恢复成功:

# md5sum RECOVERED_FILES/ del1.txt                           66fb6627dbaa37721048e4549db3224d  RECOVERED_FILES/del1.txt

查看校准码与之前的是否完全一致。

应用总结:笔者在现实使用过程中发觉extundelete还是有很大的不完整性,基于整个c盘的恢复功能较为强悍,基于目录和文件的恢复还不够强悍。在Linux下删掉不仅文件,当发觉数据遗失之后,不要进行任何操作,保留现场。要想办法把数据遗失的文件系统经过dd命令或则AIR(AutomatedImageRestore,)工具到另外的储存空间上作为最原始的备份,便于数据恢复专家现场确诊恢复。

使用scalpel

以上介绍的工具主要使用在ext3和ext4的文件系统,假如用户使用的这些没有日志机制的旧有文件系统,可以使用scalpel工具。scalpel是一种快速文件恢复工具,它通过读取文件系统的数据库来恢复文件。它是独立于文件系统的。

用户可以在下载源代码编译安装。下边瞧瞧使用方式:

使用scalpel工具之前,首先要更改配置文件:/etc/scalpel/scalpel.conf。

比如用户要恢复所有删掉pdf文件,这么要在/etc/scalpel/scalpel.conf把包括pdf文件格式的两行之前的#去除。

[...]  pdf     y       5000000 %PDF  %EOFx0d  REVERSE  pdf     y       5000000 %PDF  %EOFx0a  REVERSE  [...]

之后保存文件。

下边瞧瞧使用方式:

# scalpel /dev/sdb1 -o /RECOVERY/

linux lost found 恢复_恢复视力加盟_恢复手机日历

其中/dev/sdb1是目标驱动器,/RECOVERY/是恢复文件储存目录。目录下的audit.txt文件是恢复文件列表。

使用字符终端工具testdisk和phtorec

testdisk简介

testdisk是分区表恢复、raid恢复、分区恢复的开源免费工具(testdisk支持如下文件系统:FAT12/FAT16/FAT32/NTFS/ext2/ext3/ext4)。testdisk支持的功能:修补分区表,恢复已删掉分区,用FAT32备份表恢复启动磁道,重建FAT12/FAT16/FAT32启动磁道,修补FAT表,重建NTFS启动磁道,用备份表恢复NTFS启动磁道,用mft镜像表(mftmirror)修补mft表,查找ext2/ext3备份的superblock,从FAT,NTFS及ext2文件系统恢复删掉文件,从已删掉的FAT,NTFS及ext2/ext3分区复制文件。

使用方式

首先安装:

#apt-get install testdisk

其它Linux发行版用户可以在下载源代码编译安装。下载安装testdisk之前要安装几个软件包libjpeg8,libncursesw5,libuuid1,zlib1g。下边瞧瞧使用方式。

启动testdisk:

#testdisk

testdisk启动后的工作界面首先是选择恢复操作中的log文件(testdisk.log)的纪录方法见图1。

图1.选择恢复操作中的log文件的纪录形式

[Create]新建[Append]追加[No Log]不纪录

选择了log文件的记录方法后、系统显示处于联接状态的c盘设备见图2。

图2.处于联接状态的c盘设备

在列举的c盘设备中,选择要恢复的分区,之后选择c盘分区的种类。若是ext4文件系统的话,请选择Nonpartitionedmedia见图3:

图3.选择Nonpartitionedmedia

说明:通常选择Intel/PCpartition(假如是GPT分区,请选择EFIGPT),对于ext4文件系统选择Intel/PCpartition也能正确辨识,只是剖析硬碟時比较慢。

恢复视力加盟_linux lost found 恢复_恢复手机日历

下边的画面中选择[Analyse],对分区进行剖析见图4。

图4.对分区进行剖析

下边显示了当前分区的状态。这是软件剖析的当前分区表的分区结果,我们选择“DeepSearch”进行一次深入检查见图5。

图5.选择“DeepSearch”进行一次深入检查

下边是测量完成界面见图6。

图6.检查完成界面

在这个画面时,按P键就可以列举硬碟上的文件见图7。

图7.蓝色的文件名称就是早已被删掉的文件

绿色的文件名称就是早已被删掉的文件,选择好你要恢复的文件后,按c键然后,它还会问你要复制到那个目录,这时请选择你要复制的目地地(destination)即可。

photorec简介

photorec是一款用于恢复硬碟、光盘中遗失的视频、文档、压缩包等文件,或从数码单反储存卡中恢复遗失图片的数据恢复软件(因而,该软件命名为photorecovery这个名子)。photorec忽视文件系统,能直接从介质底层恢复数据,因而,在介质的文件系统严重破坏或被重新低格后,它也能进行数据恢复。出于安全考虑,photorec以只读形式来访问您要恢复数据所在的c盘或储存卡介质。提示:一旦发觉遗失或意外删掉了某个图片、文件,请不要继续往该储存设备或c盘保存新文件;否则您可能会覆盖原先的数据。这意味着您在使用photorec时,您千万不要将恢复的文件写入到原数据所储存的同一分区。

使用photorec恢复文件

photorec是testdisk的伴侣程序,安装testdisk后photorec就可以使用了。

启动photorec

# photorec

图8中显示了已联接c盘设备,打算恢复的文件在哪个设备上就选择它,之后在选择Proceed按键继续下一步。

图8.已联接c盘设备

恢复视力加盟_linux lost found 恢复_恢复手机日历

接出来,选择恢复的c盘分区格式。这儿选择ext4见图9。

图9.选择恢复的c盘分区格式

画面下方[FileOpt]中有可供恢复的文件种类提供被选择见图10。

图10.可供恢复的文件种类

说明:假如只是root据个别文件签名要恢复部份文件类型,这么可以按s取消全部勾选,之后联通光标到要恢复的文件类型,可按空格来选择高亮选中的类型。

下边设定要剖析的c盘空间区域,可整个分区搜索,也可只搜索自由空间(相当于未分配簇)见图11。

图11.设定要剖析的c盘空间区域

下边选择分区所使用的文件系统类型,之后设定导入的文件目录,通常输入Y并回车即可。图12是恢复完成界面。

图12.恢复完成

恢复完了选择Quit退出PhtoRec。被恢复的文件是recup_dir.x的若干数字子组合为文件名被保存在当前目录的/recup_dir子目录下的。

功能对比

表1是Linux删掉文件恢复工具

可以使用testdisk进行文件恢复的场合,也就是硬碟上的分区(该分区有原有数据纪录)早已毁坏的情形。并且假如受损以后,重新再度弄成了新分区的话,文件恢复的可能性比较小linux lost found 恢复,很困难。photorec除了针对硬碟、USB设备、CD-ROM、SD卡,但是还可以对其它储存设备进行应用。

看完上述内容,大家把握怎样使用Linux文件恢复工具的方式了吗?假如还想学到更多技能或想了解更多相关内容,欢迎关注编程网行业资讯频道,谢谢诸位的阅读!

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复