使用 Linux 文件恢复工具

 
 
 
 

Linux 文件恢复的原理

inode 和 block

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

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

文件恢复的原理

本文要介绍的命令是通过文件系统的 inode 值(一般是 2 )来获取文件系统信息。在 ext3 和 ext4 文件系统中,每个文件都是通过 inode 来描述其数据存放的具体位置,当文件被删除以后,inode 的数据指针部分被清零,文件目录区没有太多变化。文件的读写都是通过 inode 来实现,当 inode 数据指针被清零以后,即便文件内容还在,也没有办法把文件内容组合出来。当 ext3 和 ext4 文件系统中的元数据 metadata 发生变化时,相应的元数据 metadata 在日志文件会有一份拷贝。比如一个文件被删除了,它的 inode 信息会在日志文件中先保存一份,然后把要删除文件 inode 相关信息清零。这个日志文件是循环使用的,当操作过多时,删除的文件的 inode 日志记录会被新的数据替换,这就彻底丧失了根据 inode 找回数据的机会了。如果是大量文件的删除,这个日志文件会被反复循环利用多次,只留给最后删除的那些文件的恢复机会。

使用命令行工具恢复文件

foremost 和 extundelete 简介

formost 是一个基于文件头和尾部信息以及文件的内建数据结构恢复文件的命令行工具。这个过程通常叫做数据挖掘(data carvubg)。formost 可以分析由 dd、Safeback、Encase 等生成的镜像文件,也可以直接分析驱动器。文件头和尾可以通过配置文件设置,也可以通过命令行开关使用 formost 内建的文件类型。formost 最初是由美国空军特别调查室(Air Force Office of Special Investigations)和信息系统安全研究中心(The Center for Information Systems Security Studies and Research)开发的,现在使用 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 文件系统,其官方站点位于http://extundelete.sourceforce.net/,目前最新稳定版本为 0.2.0。

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

使用 foremost

首先安装软件包

1
#apt-get install foremost

其它 Linux 发行版用户可以在 http://foremost.sourceforge.net/ 下载源代码编译安装。下面看看使用方法。

恢复单个类型文件

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

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

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

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

恢复多个类型文件

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

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

使用 extundelete

首先安装软件包

1
#apt-get install extundelete

其它 Linux 发行版用户可以在http://extundelete.sourceforce.net/下载源代码编译安装。下载安装 extundelete 之前要安装两个软件包 e2fsprogs 和 e2fslibs。下面看看使用方法

模拟数据误删除环境

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 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
查询恢复数据信息,注意这里的--inode 2 这里会扫描分区 :
# extundelete /dev/sdd1 --inode 2
.....
File name                                       | Inode number | Deleted status
Directory block 8657:
.                                                 2
..                                                2
lost+found                                        11             Deleted
del1.txt                                              12             Deleted

上面标记为 Deleted 是已经删除的文件或目录

开始恢复文件

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

1
2
3
4
5
6
7
8
# 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 还是有很大的不完整性,基于整个磁盘的恢复功能较为强大,基于目录和文件的恢复还不够强大。在 Linux 下误删除了文件,当发现数据丢失以后,不要进行任何操作,保留现场。要想办法把数据丢失的文件系统经过 dd 命令或者 AIR(Automated Image Restore,http://cdnetworks-kr-2.dl.sourceforge.net/ )工具到另外的存储空间上作为最原始的备份,以便数据恢复专家现场诊断恢复。

使用 scalpel

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

用户可以在http://www.digitalforensicssolutions.com/Scalpel/ 下载源代码编译安装。下面看看使用方法:

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

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

1
2
3
4
[...]
        pdf     y       5000000 %PDF  %EOF\x0d  REVERSE
        pdf     y       5000000 %PDF  %EOF\x0a  REVERSE
[...]

然后保存文件。

下面看看使用方法

1
# scalpel /dev/sdb1 -o /RECOVERY/

其中/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 镜像表(mft mirror)修复 mft 表,查找 ext2/ext3 备份的 superblock,从 FAT,NTFS 及 ext2 文件系统恢复删除文件,从已删除的 FAT,NTFS 及 ext2/ext3 分区复制文件。

使用方法

首先安装

1
#apt-get install testdisk

其它 Linux 发行版用户可以在http://www.cgsecurity.org/wiki/TestDisk_Download 下载源代码编译安装。下载安装 testdisk 之前要安装几个软件包 libjpeg8 ,libncursesw5, libuuid1, zlib1g 。下面看看使用方法

启动 testdisk

1
#testdisk

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

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

[Create]新建

[Append]追加

[No Log]不纪录

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

图 2.处于连接状态的磁盘设备

在列出的磁盘设备中,选择要恢复的分区,然后选择磁盘分区的种类。若是 ext4 文件系统的话,请选择 [None ] Non partitioned media 见图 3

图 3.选择 [None ] Non partitioned media

说明:一般选择[Intel] Intel/PC partition(如果是 GPT 分区,请选择 EFI GPT),对于 ext4 文件系统选择 [Intel] Intel/PC partition 也能正确识别,只是分析硬盘時比较慢。

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

图 4.对分区进行分析

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

图 5.选择“Deep Search”进行一次深入检测

下面是检测完成界面见图 6

图 6.检测完成界面

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

图 7.红色的文件名称就是已经被删除的文件

红色的文件名称就是已经被删除的文件,选择好你要恢复的文件后,按 c 键之后,它就会问你要复制到哪个目录,这时请选择你要 复制的目地地(destination)即可。

photorec 简介

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

使用 photorec 恢复文件

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

启动 photorec

1
# photorec

图 8 中显示了已连接磁盘设备,准备恢复的文件在那个设备上就选择它,然后在选择 Proceed 按钮继续下一步。

图 8.已连接磁盘设备

接下来,选择恢复的磁盘分区格式。这里选择 ext4 见图 9。

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

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

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

说明:如果只是 root 据某些文件签名要恢复部分文件类型,那么可以按 s 取消全部勾选,然后移动光标到要恢复的文件类型,可按空格来选择高亮选中的类型。

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

图 11.设定要分析的磁盘空间区域

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

图 12.恢复完成

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

功能对比

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

表 1.Linux 删除文件恢复工具
工具名称/功能对比 工作界面 功能简介
foremost 命令行 formost 是一个基于文件头和尾部信息以及文件的内建数据结构恢复文件的命令行工具
extundelete 命令行 Extundelete 是 ext3、ext4 文件系统的恢复工具
scalpel 命令行 scalpel 是一种快速文件恢复工具,它通过读取文件系统的数据库来恢复文件。它是独立于文件系统的
testdisk 字符终端 Testdisk 支持分区表恢复、raid 恢复、分区恢复
phtorec 字符终端 photorec 用来恢复硬盘、光盘中丢失的视频、文档、压缩包等文件,或从数码相机存储卡中恢复丢失的图片

总结

可以使用 testdisk 进行文件恢复的场合,也就是硬盘上的分区(该分区有原有数据纪录)已经损坏的情形。但是如果损坏之后,重新再次做成了新分区的话,文件恢复的可能性比较小,很困难。photorec 不仅针对 硬盘、USB 设备、CD-ROM、SD 卡,而且还可以对其它存储设备进行应用。因此大多数常用的文件如果被误操作的话,均可利用其来进行恢复,只不过它的初衷是针对照片而制作的。

 

相关主题

使用 Linux 文件恢复工具的更多相关文章

  1. 介绍两款Linux文件恢复工具,ext3grep与extundelete https://www.cnblogs.com/lazyfang/p/7699994.html

    介绍两款Linux文件恢复工具,ext3grep与extundelete,可能在关键时刻会有所帮助.ext3grep仅对ext3文件系统有效,extundelete对ext3与ext4文件系统都有效  ...

  2. Linux文件恢复利器 ext3grep与extundelete

    介绍两款Linux文件恢复工具,ext3grep与extundelete,可能在关键时刻会有所帮助.ext3grep仅对ext3文件系统有效,extundelete对ext3与ext4文件系统都有效 ...

  3. Linux上文件恢复工具

    文件恢复工具extundelete官网:http://extundelete.sourceforge.net/ 使用方法,在页面里找到download,下载源码安装包:extundelete-0.2. ...

  4. 实用推荐:12款Linux系统恢复工具

    12款Linux系统恢复工具 电脑死机,系统崩溃,总会给电脑使用者带来一定的损失.你是否不小心删除你的纪念图片?安装新系统时候,擦除了分区表?无法读取旧CD里面的数据?别急嘛-我们将会给您推荐一些免费 ...

  5. 基于特征码文件恢复工具magicrescue

    基于特征码文件恢复工具magicrescue   常见类型的文件都包含一些特殊的字节,用来标识文件的类型.这些字节被称为特征码.在磁盘中,当记录文件存储位置的簇损坏后,就可以基于这些特征码来恢复文件. ...

  6. Ext分区文件恢复工具extundelete

     Ext分区文件恢复工具extundelete Ext是延伸文件系统(Extended system)的缩写.它是为Linux内核开发的第一个文件系统.它有多个版本.现在常见的是Ext3和Ext4.由 ...

  7. 11款最棒的Linux数据恢复工具

    无论你使用的是台式电脑还是笔记本,需要关注的重点之一都是如何保护好你的宝贵数据.因为总会有各种突发情况使你的系统崩溃,然后你要做的就是恢复数据.不管你怎么想,要是我失去了所有的数据却无法恢复的话,我会 ...

  8. Linux 文件恢复(XFS & EXT4)

    在Linux中,删除rm命令使用需谨慎,有时候可能由于误操作,导致重要文件删除了,这时不要太紧张,操作得当的话,还是可以恢复的. EXT 类型文件恢复 删除一个文件,实际上并不清除inode节点和bl ...

  9. CentOS 启动提示unexpected inconsistency;RUN fsck MANUALLY, ntfs的input/output Error,InPageError c000009c使用chkdsk修复磁盘,12款Linux系统恢复工具

    CentOS这两天服务器出了问题了,提示如下: unexpected inconsistency;RUN fsck MANUALLY An error occurred during the file ...

随机推荐

  1. PC逆向之代码还原技术,第一讲基本数据类型在内存中的表现形式.浮点,指针寻址公式

    目录 代码还原技术 一丶简介代码还原 二丶代码还原中的数据类型表现形式 1.整数类型 2.无符号整数 3.有符号整数 4.浮点数数据类型 5.浮点编码 4.Double类型解析. 三丶浮点汇编 1.浮 ...

  2. 菜鸟系列docker——docker基本概念(1)

    docker基本概念 1.准备 这里先介绍容器技术,后续再介绍docker.docker是容器的一种,除docker以外,还存在coreos.不过在当前趋势下容器和docker基本上可以划为等号了. ...

  3. 痞子衡嵌入式:语音处理工具Jays-PySPEECH诞生记(5)- 语音识别实现(SpeechRecognition, PocketSphinx0.1.15)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是语音处理工具Jays-PySPEECH诞生之语音识别实现. 语音识别是Jays-PySPEECH的核心功能,Jays-PySPEECH借 ...

  4. JavaScript 循环语句

    while     while循环由两个代码块组成,分别是条件语句和循环体. while ( [条件] ) { [循环体] } while循环类似于if语句,不同的是while循环将不断地执行循环体直 ...

  5. Java学习笔记之——集合

    集合是类,用来存储多个数据,有属性.方法 集合是一个可变数组,保存相同元素并且长度可变 1. 体系 (1)Collection:存储一个一个的值 Iterable: Iterable<T> ...

  6. linux系统管理--top命令

    这些日子,运维公司三台服务器,一个小伙伴貌似对top命令不太感冒,我告诉他去百度(不懂谷歌百度的程序员不是好厨师),然后突然发现也许我自己该整理一下相关的东西了 top命令是Linux下常用的性能分析 ...

  7. 【代码笔记】Web-JavaScript-JavaScript void

    一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  8. 微耕N3000注入

    使用ILSpy或Reflector 反编译N3000并导出解决方案,便于搜索方法代码 使用ILDASM生成中间代码D:\app\WG\AccessControl\IL\N3000.il 操作如下:(可 ...

  9. 参观微软Serbia开发中心和Office365 2019-01-31活动感悟

    这是<国外线下技术俱乐部建设>系列文章之一.   该活动网址是:https://www.meetup.com/ITPro-Serbia/events/258352104/ 活动内容是讲Of ...

  10. CSS变量(自定义属性)实践指南

    本文翻译自:https://www.sitepoint.com/practical-guide-css-variables-custom-properties/ 转载请注明出处:葡萄城官网,葡萄城为开 ...