开源数据恢复工具同样可解燃眉之急

日期: 2008-07-17 作者:Serdar Yegulalp翻译:潘春燕 来源:TechTarget中国 英文

  再安全的计算机也会出现灾难。幸好,一些开源应用软件有助于恢复重要数据,让中招的系统起死回生,比如SystemRescueCD、dd、Partedmagic、BackTrack、Security Tools Distribution、Helix和TestDisk等。


  我们所有人都会在某个时候遇到灾难。一天你正在悠哉乐哉,突然发现有台机子启动不了――不凑巧的是,这台机子存放着对你来说很重要的各种数据。尽管某种程度的灾难在所难免,但重要的是如何应对灾难。


  虽然计算机和文件系统一年比一年来得可靠,但灾难恢复技术总是会有用武之地。由于开源解决方案能够帮你从这种混乱当中恢复过来,所以你不会被专有产品的成本或者许可协议牢牢束缚。如果你愿意,还可以改动源代码,满足自己的要求。


  本文将探讨我们可以运用哪些开源解决方案来恢复数据、让中招的系统起死回生,还能使自己免遭损害。本文介绍的许多解决方案可以跨平台运行(Linux/Windows/Mac),不过有些只能在*NIX平台上运行,文章会有相应介绍。


  几种灾难场景


  没有两种数据灾难是以几乎一模一样的方式出现的。为此,你需要根据出现的灾难来采取相应的恢复措施。


  ·简单恢复:你可以采用这种恢复方法来抢救刚刚被删除(通常是不小心删除)的文件,因为意外删除数据是导致文件丢失的最主要的一个原因。大多数时候,你的本地“恢复删除”功能或者回收箱/垃圾桶能让你避免犯下十分愚蠢的举动,但有时候这毫无用处:比方说,如果你强行进行了硬删除,或者你从没有启用恢复功能的卷当中删除了某个文件。通常来说,你可以使用用来查找及恢复某些类型文件的工具(见本文稍后介绍的PhotoRec),在脱机状态下扫描这个问题卷,以这种方式来找回删除文件。


  ·复杂恢复:这适用于恢复丢失的整个分区或者引导装入程序,以及该分区上的所有内容。这里你可以使用两种基本的方法:恢复可以从分区恢复的数据,分区信息本身用不着重新构建;或者试图重新构建分区的元数据,并按正常方式重新挂载分区。


  第一种方法比较简单,不过如果你正在处理操作系统分区,那么从该分区恢复过来的文件很有可能无法恢复到可引导系统上。第二种方法提供了比较全面的恢复,但这将取决于有多少实际的卷数据原封不动。幸好,有办法可以从甚至已部分格式化的卷当中恢复文件,后文会有介绍。


  ·可移动存储或者光学介质:我也经常遇到过CD或者DVD最后因盘片受损或者年久而无法读取的事情,不过我很幸运,总能够从上面恢复所需内容。大多数恢复工具可以恢复移动驱动器或者光学介质上面的内容;不过拿CD和DVD来说,要牢记的重要一点是,使用什么驱动器来读取上面的内容。如果你可以访问若干只CD/DVD驱动器,那么不妨使用不同驱动器来创建镜像。你可能会发现,一只驱动器比另一只驱动器有更好的纠错或者抖动容限机制,因而能够恢复其他驱动器可能完全跳过的数据。另外,从Linux里面而不是Windows里面执行恢复也可能会得到不同的结果。


  ·加密介质恢复:遇到这种情况,你只好听天由命了。如果试图从加密卷恢复内容(比如加密密钥),除非当初使用了极其薄弱的加密算法(可谁又会采用这种算法呢?),那么找回数据的可能性几乎与从树上掉下来的苹果不遵守牛顿万有引力定律一样小。处理加密卷时比处理标准卷要小心一倍:备份卷头(加密文件系统通常对此有相应的措施),并保存在安全地方,卷头同样经过加密。


  不管在什么情况下,只要你开始执行恢复,就要确保挂载上去以便恢复数据的任何介质都是按只读方式来挂载的。这可以尽量减小发行版或者操作系统挂载、在“易碎”的驱动器(含有需要恢复的数据)上执行读/写操作的可能性。另外,尽量不要对原始介质采取什么操作:从介质上创建镜像文件,保存到已知正常的另一只驱动器上,然后利用镜像文件来恢复。


图1:BackTrack LiveCD发行版含有很多恢复工具,包括功能强大的Autopsy工具集。


图1:BackTrack LiveCD发行版含有很多恢复工具,包括功能强大的Autopsy工具集


  专门用于恢复数据的Linux发行版


  如果你有一项重要的恢复工作要处理,专门用于恢复的Linux发行版是最简单的起始办法。你可以从一个地方得到诸多工具,以及规模或大或小的社区。


  Puppy Linux和DSL等许多“小型”发行版就非常适用于处理这项工作,适合单单挂载卷、手动把文件拷贝出去,不需要进行任何特殊操作。话虽如此,精通技术的人如果使用的发行版内置了尽可能多的专门用于恢复的工具,效果会更好。


  比方说,基于Gentoo的SystemRescueCD发行版把众多工具塞入到了一个200MB大小的.ISO文件中,从CD或者USB驱动器启动后,就可以从命令行或者可选的X桌面来执行恢复功能。不过,这个发行版确实需要事先对Linux有所了解;如果你不太习惯进行从命令行手动挂载卷之类的操作,可能会觉得有点不知所措。尽管如此,要是你不介意学习一下,还是有可能几乎完成任何恢复任务的。


  对用户更友好一点的另一个恢复发行版是Partedmagic,它有许多同样的工具,但启动后直接进入到X桌面,可以通过图形用户界面来访问一些最常见、功能最强大的程序。同样至少了解一点Linux很有帮助,即便那只是像挂载或者卸载文件系统这样的基本技术,但不大精通的用户可能会从这里开始入手。


  这两个发行版还让你可以自由运行外面的一大批Linux应用程序;需要的话,连接到互联网;以及处理你可能希望的大多数其他操作(它们随带的程序不如大多数桌面发行版来得众多,但如果你想要的话,添加选择的应用程序或者对磁盘镜像执行其他定制并不难。)


  不怕使用命令行、想要得到一整套可用工具的专家们可以选择众多LiveCD发行版当中的一款,这些发行版经过了编译,旨在执行各种取证调查工作(数据恢复是几项潜在功能当中的一种)。


  我喜欢BackTrack和基于Knoppix的STD(安全工具发行版),后者除了一系列取证/数据恢复应用程序外,还塞入了面向一般安全的一批工具。


  另一个用于取证/恢复工作的基于Knoppix的衍生版本是Helix。默认状态下,它运行在“偏执狂模式”(paranoid mode)下:它不会挂载任何文件系统,除非明确接到了要求这么做的命令。因为这些发行版个个都是LiveCD,所以每个都要试一下,看看在默认状态下自己最习惯使用哪一个。


图2:Helix提供了明显不同于BackTrack或者STD的用户界面



图2:Helix提供了明显不同于BackTrack或者STD的用户界面


  dd及其变种


  dd来自Linux世界;或者确切地说,来自*NIX世界,它是一个常见的命令行数据恢复工具,它可以用来从任何已挂载的文件系统或者设备来创建镜像文件。如果你处理的文件系统或者设备受到了某种损坏,你又想对数据的备份副本而不是对设备本身执行恢复操作,dd就很有用。


  要介绍dd的工作方式,最好的办法就是给出一个实际例子。Paulski Pages网站显示了dd用于从出现物理故障的驱动器执行数据恢复。Debian Admin提供了另一种方法,为基于Debian的Linux发行版而编写,但基本概念具有一定的普遍适用性。用户把文件系统拷贝到镜像文件,把镜像文件作为文件系统挂载上去,然后从镜像文件执行恢复操作。


  几乎任何Linux发行版都随带常规版本的dd,但你可能想使用名为dd_rescue的变种,它有一些略有不同的功能。你还可以在dd_rescue的基础上使用dd_rhelp,这个实用程序使得dd_rescue用起来更简单了。不过也有名为ddrescue(注意没有下划线)的另一个程序,它也具有略有不同的一组选项。


  请注意:如果你使用这些程序当中的某一个来创建镜像文件,一定要确保镜像文件目标至少要有与原始设备一样多的剩余空间。另外,dd可用来破坏任何已挂载文件系统或者设备上的数据,所以在试图使用该程序之前要熟悉如何正确使用它!


图3:你可以使用TestDisk来搜索受损磁盘,找到丢失的分区。.jpg


图3:你可以使用TestDisk来搜索受损磁盘,找到丢失的分区


  文件雕刻


  前面提到过,有可能在分区信息已受损或者卷本身一部分已经过重新格式化的情况下,从文件系统当中恢复文件。这可以通过名为“数据雕刻”(data carving)或者“文件雕刻”(file carving)的一项技术来实现:恢复程序查找某些类型的文件共同具有的模式,从而找出某些类别的文件。这项技术的优点之一就在于,它几乎是完全自动的:你只要把它指向某个分区――或者分区所在位置,选择把文件恢复到哪个位置,之后程序就会自行完成繁重的寻找工作。


  TestDisk的开发者开发了名为PhotoRec的一款出色的文件雕刻工具,它可以从几乎任何一种介质上恢复许多常见格式的文件。


  这个工具几乎与独立的文件恢复工具一样必不可少。我曾在数码相机的存储卡上试了一下――由于存储卡里面的内容被清空了,我还以为无法恢复了。结果却几乎能从存储卡恢复所有内容――包括照片和录像。它无法恢复一些实际的文件名,但文件本身都可以完好无损地读出来。与TestDisk一样,默认情况下它会试图把文件拷贝到正在挽救的介质之外的某个地方,避免进一步受损。


  PhotoRec的默认设置一般来说够用了,但如果你需要粒度更细的控制,有几个选项可以设定。正常情况下禁用的“偏执狂模式”可以恢复任何内容,包括部分受损的文件;如果启用了这项功能,可以恢复更多的数据,但恢复过程可能要慢得多。同样道理,“保留受损文件”可恢复无法完全读出来的文件,希望用户能够从受损文件进一步抢救内容,可能要使用十六进制编辑器或者另一种工具。


  请注意:大多数时候,用PhotoRec恢复过来的文件没有原来的名称,但内部元数据(如MP3标签或者EXIF数据)仍然还在。另外要注意:如果你在比较小的文件系统中寻找某一种很具体的文件,可以使用该程序的内部选项来缩小搜索范围,不必把时间浪费在恢复磁盘里面的所有文件。


  默认情况下,Partedmagic急救盘也含有TestDisk和PhotoRec,所以这是你获得这两种工具、让它们发挥恢复作用的最简单的方式之一――但也可以把它们作为独立程序来下载使用。如果你想,两者也可以集成到BartPE急救盘中;我的办法就是把它们与PortableApps安装盘放在一起。也可以把它们挂载到可移动驱动器上,启动安装DVD(如果你有一张安装DVD),进入“系统恢复”命令行,然后在这里运行这些程序。


图4:用PhotoRec恢复过来的这些文件有了新名称,但元数据告诉你它们是音频文件


图4:用PhotoRec恢复过来的这些文件有了新名称,但元数据告诉你它们是音频文件


  高级的数据雕刻程序


  TestDisk和PhotoRec只是露出的冰山一角,而更多的高级程序通常用于全面的取证工作,而不是一般的普通使用。


  Foremost也许是所有数据雕刻程序的鼻祖,它原先是为美国空军特别调查办公室开发的。现在它已进入到了公共领域,所以几乎可以用在任何地方,甚至重新用于其他程序中。请注意:Foremost的二进制代码并非唾手可得;你一般需要利用源代码编译程序,才可以让它正常使用。有些Linux发行版(如Ubuntu Feisty)在软件库当中有一个预编译版本的Foremost,从而便于下载及使用。


  Scalpel也是如此,它可以说是0.69版本的Foremost的改写版――运行速度更快,提高了内存利用率,还有其他许多便利功能,可实现更高级的文件检索功能。它也没有唾手可得的二进制版本,必须利用源代码进行编译。


  Sleuth Kit是功能极其强大的一套工具,可以在众多平台(*NIX、BSD和使用CYGWIN库的Windows)上运行。与Foremost和Scalpel一样,它可以根据文件的散列或者签名来搜寻已删除文件,但还有其他众多功能。TSK名义上是一组命令行工具,如果你熟悉命令行,就可以使用它。但你也可以下载名为Autopsy的图形界面工具,它为工具包里面的工具提供了功能强大的前端程序。


  有一批数据雕刻及恢复工具既不采用开源软件,也不采用商用软件,但在这里值得补充一下,那就是PartitionSupport.com实用程序:它们运行在32位的Windows上,提供了一批功能,可用于从各种各样的受损文件系统恢复数据。


  具有恢复功能的应用程序还包括FindJPG和FindDoc,它们可以逐个磁道地彻底搜索磁盘,把所有.JPG或者.DOC文件重新构建到当前目录,就像PhotoRec那样。这些工具同样不提供源代码,但它们易于使用;如果是供个人使用,可免费获得,因而成为出色的个人或者公司内部恢复工具包。


图5:Sleuth Kit的fsstat工具的结果详细显示了从受损驱动器转储的文件系统镜像文件


  图5:Sleuth Kit的fsstat工具的结果详细显示了从受损驱动器转储的文件系统镜像文件

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

Serdar Yegulalp
Serdar Yegulalp

Serdar Yegulalp从1994年到2001年为Windows杂志写作,覆盖了广泛的技术方面。他现在是《The Windows 2000 Power Users Newsletter》一书的出版者,辛勤钻研他擅长的Windows NT, Windows 2000 and Windows XP领域,并为TechTarget写专栏。