使用 Linux 文件恢复工具
使用 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 文件系统的恢复工具 |
s calpel |
命令行 |
scalpel 是一种快速文件恢复工具,它通过读取文件系统的数据库来恢复文件。它是独立于文件系统的 |
testdisk |
字符终端 |
Testdisk 支持分区表恢复、raid 恢复、分区恢复 |
phtorec |
字符终端 |
photorec 用来恢复硬盘、光盘中丢失的视频、文档、压缩包等文件,或从数码相机存储卡中恢复丢失的图片 |
总结
可以使用 testdisk 进行文件恢复的场合,也就是硬盘上的分区(该分区有原有数据纪录)已经损坏的情形。但是如果损坏之后,重新再次做成了新分区的话,文件恢复的可能性比较小,很困难。photorec 不仅针对 硬盘、USB 设备、CD-ROM、SD 卡,而且还可以对其它存储设备进行应用。因此大多数常用的文件如果被误操作的话,均可利用其来进行恢复,只不过它的初衷是针对照片而制作的。
相关主题
- 访问 foremost 官方网站,可以查看更多关于 foremost 操作的信息。
- 访问 extundelete 官方网站,可以查看更多关于 extundelete 操作的信息。
- 访问 scalpel 官方网站,可以查看更多关于 scalpel 操作的信息。
- 访问testdisk 和 phtorec 官方维基网页,可以查看更多关于 testdisk 和 phtorec 操作的信息。
- 在 developerWorks Linux 专区寻找为 Linux 开发人员(包括 Linux 新手入门)准备的更多参考资料。
使用 Linux 文件恢复工具的更多相关文章
- 介绍两款Linux文件恢复工具,ext3grep与extundelete https://www.cnblogs.com/lazyfang/p/7699994.html
介绍两款Linux文件恢复工具,ext3grep与extundelete,可能在关键时刻会有所帮助.ext3grep仅对ext3文件系统有效,extundelete对ext3与ext4文件系统都有效 ...
- Linux文件恢复利器 ext3grep与extundelete
介绍两款Linux文件恢复工具,ext3grep与extundelete,可能在关键时刻会有所帮助.ext3grep仅对ext3文件系统有效,extundelete对ext3与ext4文件系统都有效 ...
- Linux上文件恢复工具
文件恢复工具extundelete官网:http://extundelete.sourceforge.net/ 使用方法,在页面里找到download,下载源码安装包:extundelete-0.2. ...
- 实用推荐:12款Linux系统恢复工具
12款Linux系统恢复工具 电脑死机,系统崩溃,总会给电脑使用者带来一定的损失.你是否不小心删除你的纪念图片?安装新系统时候,擦除了分区表?无法读取旧CD里面的数据?别急嘛-我们将会给您推荐一些免费 ...
- 基于特征码文件恢复工具magicrescue
基于特征码文件恢复工具magicrescue 常见类型的文件都包含一些特殊的字节,用来标识文件的类型.这些字节被称为特征码.在磁盘中,当记录文件存储位置的簇损坏后,就可以基于这些特征码来恢复文件. ...
- Ext分区文件恢复工具extundelete
Ext分区文件恢复工具extundelete Ext是延伸文件系统(Extended system)的缩写.它是为Linux内核开发的第一个文件系统.它有多个版本.现在常见的是Ext3和Ext4.由 ...
- 11款最棒的Linux数据恢复工具
无论你使用的是台式电脑还是笔记本,需要关注的重点之一都是如何保护好你的宝贵数据.因为总会有各种突发情况使你的系统崩溃,然后你要做的就是恢复数据.不管你怎么想,要是我失去了所有的数据却无法恢复的话,我会 ...
- Linux 文件恢复(XFS & EXT4)
在Linux中,删除rm命令使用需谨慎,有时候可能由于误操作,导致重要文件删除了,这时不要太紧张,操作得当的话,还是可以恢复的. EXT 类型文件恢复 删除一个文件,实际上并不清除inode节点和bl ...
- 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 ...
随机推荐
- flume 1.8.0 开发基础
本文由云+社区发表 作者:皮皮熊 概述 Apache Flume是一个用于高效地从大量异构数据源收集.聚合.传输到一个集中式数据存储的分布式.高可靠.高可用的系统. Apache Flume是Apac ...
- canvas API ,通俗的canvas基础知识(一)
在没学canvas的时候,觉得canvas是这么的神秘,这么的绚丽,这么的高深,用canvas做出来的效果是如此的炫酷,能做的事情如此的宽广,简直让我心生敬畏之心,时常感叹:我要是得此技能,必定要上天 ...
- C# Quartz定时任务corn时间设置详解
http://cron.qqe2.com/ 如果不会 或者想检验自己是否写的对就 通过这个网站 检测 或自动生成 * * * * * * ...
- PHP的异常处理机制
1.PHP中异常的独特性 PHP中的异常的独特性,即PHP中的异常不同于主流语言C++.java中的异常.在Java中,异常是唯一的错误报告方式,而在PHP中却不是这样,而是把所有不正常的情况都视作了 ...
- CSS3 box-shadow 属性 紧跟在 -webkit-, -ms- 或 -moz-
浏览器支持 表格中的数字表示支持该属性的第一个浏览器版本号. 紧跟在 -webkit-, -ms- 或 -moz- 前的数字为支持该前缀属性的第一个浏览器版本号. 语法 box-shadow: h-s ...
- 等价路由在路由器和CE交换机上默认的行为是不同的,路由器总是走第一个下一跳,CE交换机是逐包。
结论: 1.在eNSP中实验,路由器和CE交换机对于等价路由的默认转发行为是不同的, 路由器:默认是基于流的转发形态,更准确的来讲,ping两个不同的下一跳,都是走等价路由的第一个路由,不走第二条路由 ...
- KeePass全网最详使用指南
从入门到熟练:KeePass全网最详使用指南 https://post.smzdm.com/p/713042/
- Python使用Plotly绘图工具,绘制柱状图
使用Plotly绘制基本的柱状图,需要用到的函数是graph_objs 中 Bar函数 通过参数,可以设置柱状图的样式. 通过barmod进行设置可以绘制出不同类型的柱状图出来. 我们先来实现一个简单 ...
- Go-Ethereum 1.7.2 结合 Mist 0.9.2 实现代币智能合约的实例
目录 目录 1.什么是 Mist 2.Mist 在哪里下载? 3.Mist 有哪些依赖? 4.如何安装 Mist? 4.1.安装 Mist 依赖工具包 4.2.安装 Mist 4.3.启动 Mist, ...
- TomCat的安装及测试
1.每个版本的安装都是一样,解压之后是一个文件夹 2.配置环境变量,右击我的电脑,属性--高级属性设置--环境变量--新建--配path即可(path后加;%CATALINA_HOME%\bin;) ...