This box will be fixed on your screen using Firefox, Opera9 or IE7.

数据恢复

计算机上什么最昂贵?是cpu,还是内存,还是硬盘?都不是,这里面任何一个部件都可以更换的,只有数据是最关键的,数据的丢失才是最大的损失。常常听到或者看到某个朋友抱怨“我硬盘上的数据都读不出来了,怎么办?”,“我的硬盘被误格式化了,里面还有重要的数据,怎么办?”,或者“昨天刚写好的文档被误删除了,怎么找回来?”等等,天有不测风云,人有旦夕祸福,万一哪一天这个抱怨的人是我们自己,怎么办?如果是对于用户而言并不重要的数据,那么丢了就丢了,没太大关系;但如果数据对用户很重要,这时数据丢失了怎么办呢?下面我来讲解一些数据恢复的基本知识。

首先申明一点,对于重要数据,备份数据才是防止数据丢失的根本方法,而数据恢复依赖于很多因素,很难完全恢复数据,一般是仅仅可以恢复部分数据。

数据恢复就是找回丢失的数据,例如彻底删除某个文件或文件夹,重新格式化磁盘,重新分区磁盘等等都会造成数据的丢失。更严重的数据丢失是存储介质硬件损坏,例如,硬盘不小心摔坏了、硬盘根本就不认了、硬盘有大量坏道等等。最值得注意的一点是,一旦意识到数据丢失了,立刻停止一些不必要的操作,误删、误格后,不要再往磁盘里写数据了!磁盘摔坏后,不要再加电了!磁盘出现坏道读不出来,不要反复读盘了等等。

数据是存储在存储介质中的,存储介质分为2类,一种是临时的,如内存,一旦断电,就会彻底丢失,另外一种是永久性的,大容量的主要是光介质和磁介质,如硬盘,光盘,软盘,磁带机等等,可以较长时间的保存数据,不受断电的影响,比较新的存储设备有优盘,CF卡,SD卡,xd卡等等。
一直以来,硬盘具有速度快,容量大,操作方便,可以随机访问,可靠等等优点,都是计算机系统中最主要的存储设备,同时也是计算机系统中最容易出故障的部件。十几年来,计算机CPU的运行速度已经翻了不知道多少番,从几十MHz提高到现在的3GHz以上,计算和处理功能已经过了几代飞跃。其他零部件,诸如显卡、声卡和光驱也已经换了很多代,只有硬盘这个最主要的存储设备,虽然容量和速度有了很大提高,但基本结构和工作原理仍然没有多大的变化,而且由于硬盘转速和磁盘密度的提高,硬盘比以前更加容易损坏。而光盘,软盘,磁带机等等主要是作为备份数据使用,优盘更多的用于临时交换数据。

硬盘故障大致可分为硬故障和软故障两大类。硬故障即PCBA板损坏、盘片划伤、芯片及其它原器件烧坏、断针断线、磁头音圈电机损坏等,是由于硬盘自身的机械零件或电子元器件损坏而引起。剧烈的震动、频繁开关机、电路短路、供电电压不稳定等比较容易引发硬盘物理性故障,硬件故障一般表现为CMOS不认硬盘,常有一种“咔嚓咔嚓”的磁组撞击声或电机不转、通电后无任何声音、磁头不对造成读写错误等现象,对上面描述的大部分情况,一般都要送到专门的数据恢复中心检测和恢复数据。

硬盘软故障即硬盘数据结构由于某种原因,比如说病毒导致硬盘数据结构混乱甚至不可被识别而形成的故障。一般来说,主板BIOS硬盘自动检测(IDE HDD AUTO DETECTION)功能能够检测到硬盘参数,均为软故障。一般情况下,硬盘在发生故障时系统会在屏幕上显示一些提示信息,所以我们可以按照屏幕显示的提示信息找到故障原因,有针对性地实施解决方案。软故障包括误分区、误格式化、误删除、误克隆、MBR丢失、BOOT扇区丢失、病毒破坏、黑客攻击、分区信息丢失、RAID0磁盘阵列、RAID1磁盘阵列、RAID5磁盘阵列失效等因素造成的数据丢失。硬盘软故障相对于物理故障来说,更容易修复些,而它对数据的损坏程序也比硬盘物理故障来得轻些。

下面主要说明一下硬盘发生软故障后数据恢复的大概方法,部分原理可以用于优盘,光盘等的数据恢复。

基础知识-硬盘, 分区和文件系统的介绍

硬盘内部结构

关于硬盘结构的文章已经非常多了,不过真正要说清楚的话,就算专门出一本书也说不完,因此这里就不再从头细细讲述了。

硬盘最基本的组成部分是由坚硬金属材料制成的涂以磁性介质的盘片,不同容量硬盘的盘片数不等。每个盘片有两面,都可记录信息。盘片被分成许多扇形的区域,每个区域叫一个扇区,每个扇区可存储128×2的N次方(N=0.1.2.3)字节信息。在DOS中每扇区是128×2的2次方=512字节,盘片表面上以盘片中心为圆心,不同半径的同心圆称为磁道。硬盘中,不同盘片相同半径的磁道所组成的圆柱称为柱面。磁道与柱面都是表示不同半径的圆,在许多场合,磁道和柱面可以互换使用,我们知道,每个磁盘有两个面,每个面都有一个磁头,习惯用磁头号来区分。扇区,磁道(或柱面)和磁头数构成了硬盘结构的基本参数。在老式硬盘中,采用的都是这种比较古老的CHS(Cylinder/Head/Sector)结构体系。因为很久以前,在硬盘的容量还非常小的时候,人们采用与软盘类似的结构生产硬盘。也就是硬盘盘片的每一条磁道都具有相同的扇区数,由此产生了所谓的3D参数(Disk Geometry),即是磁头数(Heads)、柱面数(Cylinders)、扇区数(Sectors)以及相应的3D寻址方式。对于现在的新硬盘来说,都已经全部不采用这样的结构,而是采用了更加科学的结构方式,目前的硬盘都是线性寻址也就是直接使用扇区号来访问硬盘,137G以下的硬盘使用32位整数作为扇区号,而137G以上的硬盘使用48位整数作为扇区号。

CHS结构体系

其中:磁头数表示硬盘总共有几个磁头,也就是有几面盘片,最大为255(用8个二进制位存储);柱面数表示硬盘每一面盘片上有几条磁道,最大为1023(用10个二进制位存储);扇区数表示每一条磁道上有几个扇区,最大为63(用6个二进制位存储);每个扇区一般是512个字节,理论上讲你可以取任何一个你喜欢的数值,但好像至今还没有发现取别的值的。所以磁盘最大容量为:
255×1023×63×512/1048576=8024MB(1M=1048576Bytes)
或硬盘厂商常用的单位:
255×1023×63×512/1000000=8414MB(1M=1000000Bytes)

由于在老式硬盘的CHS结构体系中,每个磁道的扇区数相等,所以外道的记录密度要远低于内道,因此会浪费很多磁盘空间(软盘也是一样)。为了进一步提高硬盘容量,现在硬盘厂商都改用等密度结构生产硬盘。这也就是说,每个扇区的磁道长度相等,外圈磁道的扇区比内圈磁道多。采用这种结构后,硬盘不再具有实际的3D参数,寻址方式也改为线性寻址,即以扇区为单位进行寻址。而为了与使用3D寻址的老软件兼容(如使用BIOSInt13H接口的软件),厂商通常在硬盘控制器内部安装了一个地址翻译器,由它负责将老式3D参数翻译成新的线性参数。这也是为什么现在硬盘的3D参数可以有多种选择的原因(不同的工作模式可以对应不同的3D参数,如LBA、LARGE、NORMAL)。而随着磁盘密度的增加、机构的进一步复杂、功能和速度上的提高,如今的硬盘都会在磁盘里面划分出一个容量比较大的,称为“系统保留区”的区域,用于储存硬盘的各种信息、参数和控制程序,有的甚至把硬盘的Fireware也做到了系统保留区里面(原来这些信息都是储存在硬盘控制电路板的芯片上的)。这样虽然可以进一步简化生产的流程,加快生产速度和降低生产成本,但是从另一方面,却又大大增加了硬盘出现致命性损坏的几率和缩短了硬盘的使用寿命。

恢复数据的原理和方法

发觉硬盘故障,需要恢复数据的时候,第一步所要做的就是检测,判断磁盘的故障原因和数据损坏程度

只有明确磁盘的损坏程度和故障原因,才能采取正确的步骤恢复数据:

硬盘内部故障,表现形式一般是CMOS不能识别硬盘,硬盘异响,那么可能的故障原因物理磁道损坏、内电路芯片击穿、磁头损坏等等,可以采用的修复手段有:内电路检修、在超净间内打开盘腔修复,这种情况只能送到专业的数据恢复公司。

硬盘外电路故障,如果CMOS不能识别硬盘,硬盘无异响,那么可能的故障原因是外电路板损坏、芯片击穿、电压不稳烧毁等等,可以采取的手段是外电路检修,或者更换相同型号的硬盘的电路板,一般需要送到专业的数据恢复公司。

软故障,如果CMOS能识别硬盘,一般是硬盘软故障,破坏原因一般是系统错误造成数据丢失,误分区、误删除、误克隆、软件冲突、病毒破坏等等,可以采用的方法有专用数据恢复软件或者人工方式。

下面具体讲解软故障的数据恢复方法

  1. 确认数据丢失的故障原因
    1. 硬盘数据丢失,故障原因包括:
      病毒破坏,误克隆,硬盘误格式化,分区表失丢,误删除文件,移动硬盘盘符认不出来(无法读取其中数据,硬盘零磁道损坏),硬盘误分区,盘片逻辑坏区,硬盘存在物理坏区。
    2. 文档数据损坏,如Office 系列数据文件损坏,Zip、MPEG、asf、RM 等文件数据损坏。
  2. 根据故障原因,采用相应的手段和步骤
    1. 备份数据,根据数据的重要程度,决定是否需要备份数据,备份数据的一般步骤是
      1. 卸下损坏硬盘,接到另外一台完好的机器,注意新机器上有足够的硬盘空间备份
      2. 使用ghost的原始模式(raw),一个扇区一个扇区的把损坏磁盘备份到一个镜像文件中。如果硬盘上有物理坏道,最好是采用ghost的方式制作一个磁盘镜像,然后所有的操作都在磁盘镜像上进行,这样可以最大限度的保护原始磁盘不被进一步损坏,可以最大限度的恢复数据。
  3. 修复硬盘数据修复硬盘数据有2种类型,一种直接在原始硬盘修改,一种是把读出数据存储到其他的硬盘上。基本思路就是就是根据磁盘现有的信息最大限度的推断出丢失的分区和文件系统系统的信息,把受损的文件和系统还原,所以如果信息损失太多,那么是不可能恢复数据的。比如错误删除一个文件后,随即又拷贝了较大的文件过来,那么多半是被删除的文件被新拷贝过来的文件所覆盖,几乎是无法恢复了。

一个常识就是,如果想要恢复数据,那么不要在出问题的磁盘上运行scandisk或者Norton Disk Doctor等直接修复文件系统错误的软件,切记。

下面根据不同的情况举例说明:

分区表失丢,分区表是硬盘的重要数据结构,管理整个硬盘的空间。首先介绍相关的知识

零磁道,MBR和分区表DPT:

零磁道处于硬盘上一个非常重要的位置,硬盘的主引导记录区(MBR)就在这个位置上。零磁道一旦受损,将使硬盘的主引导程序和分区表信息遭到严重破坏,从而导致硬盘无法自举。如下图。零磁道,MBR和分区表DPT

MBR:

当通过Fdisk或其他分区工具对硬盘进行分区时,分区软件会在硬盘0柱面0磁头1扇区建立MBR(Main Boot Record),即为主引导记录区,位于整个硬盘的第一个扇区,在总共512字节的主引导扇区中,主引导程序只占用了其中的446个字节,64个字节交给了DPT(Disk Partition Table硬盘分区表),最后两个字节(55 AA)属于分区结束标志。主引导程序的作用就是检查分区表是否正确以及确定哪个分区为引导分区,并在程序结束时把该分区的启动程序调入内存加以执行。

DPT:

分区表DPT(Disk Partition Table),把硬盘空间划分为几个独立的连续的存储空间,也就是分区。分区表DPT则以80H或00H为开始标志,以55AAH为结束标志。分区表决定了硬盘中的分区数量,每个分区的起始及终止扇区、大小以及是否为活动分区等。

通过破坏DPT,即可轻易地损毁硬盘分区信息。分区表分为主分区表和扩展分区表。

主分区表位于硬盘MBR的后部。从1BEH字节开始,共占用64个字节,包含四个分区表项,这也就是为什么一个磁盘的主分区和扩展分区之和总共只能有四个的原因。每个分区表项的长度为16个字节,它包含一个分区的引导标志、系统标志、起始和结尾的柱面号、扇区号、磁头号以及本分区前面的扇区数和本分区所占用的扇区数。其中”引导标志”表明此分区是否可引导,即是否活动分区。当引导标志为”80″时,此分区为活动分区;”系统标志”决定了该分区的类型,如”06″为DOS FAT16分区,”0b”为DOS FAT32分,”63″为UNIX分区等;起始和结尾的柱面号、扇区号、磁头号指明了该分区的起始和终止位置。

分区表项的16个字节分配如下:

第1字节: 引导标志
第2字节: 起始磁头
第3字节: 低6位为起始扇区, 高2位与第4字节为起始柱面
第4字节: 起始柱面的低8位
第5字节: 系统标志
第6字节: 终止磁头
第7字节: 低6位为终止扇区, 高2位与第8字节为终止柱面
第8字节: 终止柱面的低8位
第9-12字节: 该分区前的扇区数目
第13-16字节: 该分区占用的扇区数目

扩展分区作为一个主分区占用了主分区表的一个表项。在扩展分区起始位置所指示的扇区(即该分区的第一个扇区)中,包含有第一个逻辑分区表,同样从1BEH字节开始,每个分区表项占用16个字节。逻辑分区表一般包含两个分区表项,一个指向当前的逻辑分区,另一个则指向下一个扩展分区。下一个扩展分区的首扇区又包含了一个逻辑分区表,这样以此类推,扩展分区中就可以包含多个逻辑分区。为方便说明,我们把这一系列扩展分区和逻辑分区分别编号,主扩展分区为 1号扩展分区,第一个逻辑分区表所包含的两个分区分别标为 1号逻辑分区和 2号扩展分区,依次类推。

主分区表中的分区是主分区,而扩展分区表中的是逻辑分区,并且只能存在一个扩展分区。数据恢复图二

FS即文件系统,位于分区之内,用于管理分区中文件的存储以及各种信息,包括文件名字,大小,时间,实际占用的磁盘空间等。windows 目前常用的文件系统包括FAT12,FAT16,FAT32和NTFS系统。

DBR(Dos Boot Record)是操作系统引导记录区。它位于硬盘的每个分区的第一个扇区,是操作系统可以直接访问的第一个扇区,它一般包括一个位于该分区的操作系统的引导程序和相关的分区参数记录表。

簇,是文件系统中最小的数据存储单元,由若干个连续的扇区组成,硬盘的扇区的大小是512字节(几乎是用于所有的硬盘),也就是既是一个字节的文件也要分配给它1个簇的空间,剩余的空间都被浪费了,簇越小,那么对小文件的存储的效率越高,簇越大,文件访问的效率高,但是浪费空间比较严重。

FAT(file allocation table)即文件分配表,记录了分区中簇的的使用情况,FAT表的大小与硬盘的分区的大小有关,为了数据安全起见,FAT一般做两个, 二FAT为第一FAT的备份,用于FAT12,FAT16,和FAT32文件系统。

DIR是DIRECTORY即根目录区的简写,根目录区存储了文件系统的根目录中的文件或者目录的信息(包括文件的名字,大小,所在的磁盘空间等等),FAT12,FAT16的DIR紧接在第二FAT表之后,而FAT32的根目录区可以在分区的任何一个簇。

MFT(Master File Table)是NTFS中存储有关文件的各种信息的数据结构,包括文件的大小,时间,所占据的数据空间等等。

以FAT32为例,FAT32分区的的0-2扇区为FAT32文件系统的DBR即引导扇区,3-5扇区为0-2扇区的备份。6-31扇区为空,32扇区开始为第一个FAT表,FAT表的大小与硬盘的分区的大小有关。随后是第2个FAT表,剩余的空间都是实际的文件所占用的,包括目录和文件。FAT32文件系统的根目录并不一定是数据区的第一个簇,它可以位于数据区的任何一个簇,这也是FAT32的根目录大小不在受255个文件限制的原因,这也是FAT32的文件名可以支持长文件名的原因之一。

分区表丢失,表现为硬盘原先所有分区或者部分分区没了,在磁盘管理器(winxp win2000 win2003)看到未分区的硬盘或者未分区的空间。有多种可能:

病毒,当年的cih病毒会用无效的数据填充分区表和第一个分区的数据,这种情况下,从前面介绍的分区的性质来看,c盘的数据很难恢复,而随后d盘和e盘等分区的实际数据并没有被破坏,而仅仅是分区表丢失而已,所以只要找到D盘和E盘等分区的正确的起始和结束位置,很容易恢复。

重新分区,使用fdisk对磁盘重新划分空间分布,那么原来的分区表被新的分区表取代,这个时候,同样是原来分区的数据没有损坏,仅仅是分区表指向了不正确的位置。

修复分区表和文件分配表丢失导致数据丢失

例1

下面我以我帮朋友手工修复的被类似cih病毒损坏的硬盘为例讲解,当时修复硬盘的自动化工具还很少,所以我完全是手工计算来恢复分区表的,其实目前的自动化的工具也是使用类似的原理来修复,计算机来计算比人要准确得多,但是有可能产生误判,依然需要人工辅助。

  1. 判断,了解情况,了解到的是使用正常,突然系统重新启动,无法引导操作系统。20G硬盘系统分为3个分区,第一个分区是fat32,大约5个G,第二个分区也是fat32,大约8个G,最后一个分区是NTFS,重要的数据都在第二个分区上,只要恢复第二个分区就可以了。
  2. 重新启动系统,发现bios可以正确识别硬盘,说明是硬盘的软故障,不需要送到数据恢复公司。
  3. 使用dos系统盘启动,运行norton 的diskedit 工具,以物理磁盘的方式访问(逻辑磁盘信息全部丢失),例1图1
  4. 发现MBR完全是无效的代码,分区表也无效,察看随后的c盘所在扇区,同样是混乱的数据,察看硬盘后面的扇区,看到很多熟悉的文件名字,判断是硬盘的前面部分被覆盖,后面数据可能没有受损。
  5. 确定D盘和E盘的开始和结束位置,在磁盘上搜索特征字符串,如55AA,是扩展分区表和分区的DBR的结束标志,或者根目录的某些特殊文件名字。由于搜索速度比较慢,因为c盘大约5g,所以可以从大约3g甚至4g的位置开始搜索,为了保险起见,我从硬盘的3g的偏移位置开始搜索DBR,规则是如55aa在扇区结尾,扇区开始有fat32的签名(OEM和FAT32等字样),随后的扇区有比较整齐的fat数据,向前63扇区是扩展分区表等等,满足的条件越多,可能性越大,经过一系列的比较和判断,(这种工作手工方法非常吃力),终于找到了d盘的dbr,也就是d盘的实际的第一个扇区,向前偏移63个扇区,发现扩展分区表完好无损,这样就找到了完整的扩展分区。search object in diskedit
  6. 在主分区表中写入扩展分区的起始和结束信息以及相关的内容。
  7. 重新启动用DOS系统盘启动,发现了原来的D盘,数据完好无损,而E盘由于是NTFS,所以无法访问,但是相信E盘也没有损坏。

这样通过一番搜索,重建了丢失的扩展分区的分区表,100%的恢复了重要数据分区D盘。使用磁盘工具重建分区表的过程基本类似,都是通过分析相关的信息重建分区表,这次数据恢复经历,完全可以用Diskgen工具来恢复,而且更加方便一些。

例2

下面一个例子是分区表丢失,并且fat表也损坏的例子的数据恢复。

一个朋友拿着一个4G的硬盘来找我,说起动后看不到分区,但是里面有一个程序里面有关于公司的一些比较重要的数据,dbf格式的数据库,公司比较小,没有多少人懂电脑,也没有备份。我帮助他找到了大部分数据,还是有一份数据丢失了。

首先我把他的硬盘接到我的机器上,然后:

  1. 大概了解硬盘的情况,询问硬盘损坏的原因。他告诉我说打开机器,发现无法启动,主板似乎没有自检,怀疑主板坏了,换了一块主板,发现只能在bios里面找到硬盘,而不能进入系统,接到别的机器上,也看不到分区。我说可能就是分区表丢了,如果仅仅是分区表丢了的话比较简单。
  2. 粗略查看硬盘数据。运行winhex或者RunTimes的磁盘工具diskexplorer,(其他的可以进行磁盘编辑的软件也可以),如下图,open disk with winhex 选中需要的物理硬盘。然后拖动滚动条,浏览一遍整个硬盘,可以看到一些有意义的字符串,还可以见到大批的零数据,当然更多的是看不懂的内容。这个没有关系,至少目前说明硬盘没有什么明显的物理损坏,或者逻辑坏道。
  3. 自动寻找。用Easy recovery 6里面的工具试图自动找到分区,失败了。
  4. 试图重建分区表。查看第一个扇区也就是MBR的内容,发现一塌糊涂,分区表完全损坏。如果仅仅是分区表损坏,完全可以通过搜索分区,然后根据分区的偏移重建分区表。
  5. 了解分区情况,如硬盘分几个区,每个分区大概多大,分区格式是什么。继续询问,了解到机器大概是99年左右买的,装的是win98,不知道几个分区,不知道分区格式是fat16还是fat32,不知道那个关键程序装在那个分区,不知道那个关键程序的目录名字,头晕,一问三不知阿,不过至少知道是fat格式,不是ntfs格式,而且很可能是fat32的分区格式(纯属猜测)。根据经验,一般第一个分区从第64个扇区开始,这个扇区是分区的第一个扇区,对于fat来说,是引导扇区,里面存储着BPB数据。从起始扇区一直浏览到第64个扇区,前面的扇区数据都很混乱,不像是空白的样子,怀疑被病毒改写了,看这样的症状,猜测是CIH,损坏bios,导致主板不能启动,同时搞乱C盘的数据。一直到远远超过了64个扇区的时候,也没有看到看起来可能是fa t的引导扇区的扇区。直接搜索扇区尾部的55AA,搜索了一会,似乎没有找到引导扇区。
  6. 寻找根目录。找不到引导扇区,无法定位分区的开始,从而无法定位fat文件分配表的位置。换个思路,根路径一般就在fat表后面,挨着fat表,所以决定搜索根路径。看看我的win98的根目录,有MSDOS这个文件名字,于是搜索MSDOS这个字符串,很幸运,找到了,在大约第16700个扇区里面,然后倒退几个扇区,发现了fat表,fat表一般是排列很整齐的数据,你打开你自己的硬盘,看看fat的16进制表示,就知道这个很整齐大概是什么样子了。这样看来,第一个分区大概在硬盘的8M(16700*512/1024/1024==8M)左右的位置开始的。 找一个磁盘编辑工具,如RunTimes的磁盘工具diskexplorer,从根路径扇区的开始位置用根路径的模式查看,熟悉的文件名字出现了,说明这里确实是根路径所在的扇区。查看fat表,似乎前面部分的fat损坏了一部分,而后面的比较完好,同时 还是没有找到引导扇区,看来引导扇区被破坏了。
  7. 再一次自动寻找。根据前面的信息,已经可以推算出大部分的信息了,但是手工劳工比较辛苦,还是试一试自动化的工具哦。再一次运行Easy recovery 6,使用Data recovery 里面的AdvancedRecovery工具,如图所示,advanced search in easy recovery 当硬盘上没有分区信息时候,红色箭头所指的Advanced Options按钮是可以选择设定的。第一次自动寻找的时候,就是使用了缺省的设置,所以搜索失败,根据前面的分析,设定搜索范围从16000个扇区开始,分区类型选择fat32,fat的匹配模式选择忽略fat表(缺省时候是最佳匹配),然后就可以看到 Easy recovery 6不断的显示出查找的文件。
  8. 导出重要数据。可以说Easy recovery6得恢复还是比较成功的,恢复出了相当多的目录结构,关键是我看到了lock2000目录,这就是我们要寻找的重要数据目录。其他没有关系的数据就不要了。存储lock2000目录后,打开dbf数据库,发现大部分数据库完全恢复,少部分在最后面出现了乱 码,也就是最后面的数据不太对。

最后,总共历时1个小时。基本上,数据恢复是成功的,不能恢复的部分估计是因为fat表的损坏导致Easy recovery 6无法恢复。

得到的教训是,充分利用自动化工具,但是,随着大硬盘的增多,自动化工具扫描一次非常费时间,即使4g的硬盘很小,也是比较慢的,在第一个例子中搜索20G的硬盘是很慢的,要有耐心)。所以要注意收集信息,信息收集越充分,提供给自动化工具的信息越多,数据恢复的可能也越大。

数据备份

我在前面讲的2个例子都没有备份数据,第一个例子是因为分区表彻底损坏,而我后来仅仅修改了分区表,所以我没有备份数据。第二个例子是因为现在的数据修复工具基本上考虑到了保存原始数据的必要性,一般不是直接在硬盘上操作,而是仅仅在内存中重建fat等操作,基本没有写硬盘的操作 ,因为没有对硬盘的写操作,所以不需要备份数据。但是重申一点,重要数据最好备份,否则一旦误操作,就后悔莫及了。

对于重要的数据,在数据恢复之前,必须进行扇区级别的磁盘数据备份,有很多磁盘备份工具,如 ghost ,winhex,runtime的diskexplorer,使用IA的参数,会让ghost对原始硬盘做一个按照扇区模式备份的镜像文件,这时候一般选择img格式,比较通用,命令如下,
ghost -IA -clone,mode=create,src=2,dst=c:\baddisk.img

当然使用gho格式也没有问题。或者运行ghost后,选择设定菜单中的Image All的选项,如下图,raw mode in ghost 随后就是平常的操作过程,选择要备份的硬盘,和目标镜像文件的位置和格式,再如下图。ghost with img format 还有很多gui的软件也可以对硬盘做这种扇区级别的备份,如runtime的diskexplorer,winhex,如下图 runtime explorer

误删除文件的恢复

误删除文件的恢复的原理是什么呢?为什么删除文件后,又可以恢复回来?是不是所有的删除的文件都可以恢复?

当我们存储一个文件的时候,操作系统首先在一个记录所有空间使用情况的表格中,找到足够容纳我们的新文件的空间,然后把文件内容写到相对应的硬盘扇区上,最后在表格中标出该空间被占用了。

当我们删除一个文件的时候,一般并不对实际文件所占用的扇区进行操作,而是仅仅在该表格中指明那些空间是空白的了,可以分配给别的文件使用。在这个时候,被删除的文件的实际内容并没有受到破坏,可以恢复回来。如果我们删除一个文件后,又重新创建了一个文件,那么被删除文件所占用的扇区就有可能被新创建的文件所使用,这时候就无法恢复原来被删除的文件了。所以一旦错误的删除了文件,必须注意的就是不要对该文件所在的分区进行写操作了,否则有可能覆盖原来删除的文件,从而导致数据无法恢复。

对于误删除的文件,我们有很多选择,如finaldata,recover4all,easyrecovery,这些软件使用很简单,直接按照向导的指示就可以了。

下面介绍一种手工恢复被删除数据的方法,特别是使用这种自动化的方法恢复无效的时候,这种方法适合恢复有明显特征的结构简单的文件,如文本文件,如果格式复杂,就需要写一个类似的程序来恢复了。原理就是直接在分区中寻找被删除的文件的内容。

一个实例就是微软公司的vc6,vc6的ide有一个bug,一直没有修复,就是存储写好的程序代码的时候,偶然会弹出一个对话框说无法存储文件,这个时候必须再存一次才可以,如果你直接关闭vc6,就会发现刚才那个文件被删除了(这个bug是微软确认的,一直到vc6的sp5补丁也没有修复)。

我的一个朋友使用vc6的时候遇到了这个bug,而且他以为vc6出了问题,直接关闭了vc6,结果很费劲才调试好的很长的一的文件就失踪了。

我首先试用了finaldata和easyrecovery,结果找出很多以前删除的文件,就是没有需要的。没有办法的情况下,只好使用强行搜索的方法了

  1. 运行winhex,选择tools菜单中的opendisk,如图,open disk with winhex选择误删除的文件所在的逻辑盘c盘,
  2. 选择search菜单,使用find text命令,在打开的c盘上直接搜索程序代码中的特征串“增加了处理Reg_Expand_SZ”,如图find date in winhex
  3. 经过一段时间后,如图,code find in winhex把找到的代码所在扇区的前后几个扇区全部复制下来,拷贝到一个新的文件中,这样就找回了原来的代码。

对于恢复结构性很强的文档,如果自动化的方式不起作用,可以写一个小程序来搜索的同时加以判断,或者直接利用winhex提供的接口写一个脚本,如果数据很重要,这样的手段也是很需要的。如果文件分散在分区的多个位置,还需要根据文档的内部结构来重新组织文档,才能彻底恢复数据。

误格式化的原理也是非常类似,仅仅是快速格式化的时候,并没有覆盖原来的数据,所以可以恢复。

12 Comments

  1. dark Comments @ 13:15:23 on 2004-12-18

    呵呵,我又增添了一个技术型的作者了。希望能携手提高Blog内容的整体质量。这就是一重磅文章呀。甚喜甚喜 :)

  2. 罗生门 Comments @ 23:03:15 on 2005-01-04

    看到这个帖子了……收藏
    有个问题我一直想搞明白:
    0磁头0柱面1扇区上除了MBR占用了一个扇区外,0磁头0柱面另外的扇区都未使用,做了隐含扇区。。。
       dos扇区是从0柱面1磁头1扇区开始分,分完磁头1然后再分0柱面2磁头。。。。直到分到1柱面1磁头1扇区。。。分完为止。。。没有使用0磁头。。。
       DBR也已经在1磁头上了。。。。,整个0磁头,一个盘面,就只是MBR用了512字节?
    ^_^~~老余头看看。

  3. dark Comments @ 15:13:01 on 2005-01-06

    我不敢越俎代疱,还是等储存专家来回答你吧。

  4. lyh728 Comments @ 20:35:56 on 2005-01-13

    前面的隐含扇区数目由分区表决定,可以空出很大的空间,而且这个空间有可能被使用例如pq 的vfloppy,还有smartboot等等启动管理程序。大部分情况下,只有mbr用了,512字节,其余空着。

  5. 数据恢复 Comments @ 01:52:56 on 2005-02-21

    不错!希望我们多多交流!文章写得不错,有一定的技术水平!

  6. dark Comments @ 01:53:40 on 2005-02-21

    楼上朋友,交流是欢迎的,打广告滴8要。

  7. liu liangyun Comments @ 10:15:46 on 2005-03-17

    水平不错,不知能否解决如下问题:
    160G硬盘只有一个分区,NTFS格式,误删除分区后,使用绝大多数软件只能找到137G分区,其它21G分区不能识别,后果是绝大多数数据不能恢复。
    请赐教。liuliangyun@sina.com

  8. isabell Comments @ 23:14:28 on 2005-03-31

    那么具体说一下u盘好吗?
    我的u盘由于插拔不当已经无法识别了
    这种情况恢复数据的可能性还有多大呢?

  9. jewllin Comments @ 17:10:27 on 2005-04-27

    我的问题和isabell的一样,里面有重要的文件,那怎么才能把数据导出来呢?急啊,谢谢!

  10. 数据恢复 Comments @ 16:02:23 on 2006-03-02

    回复一下8、9楼的朋友:
    U盘出现问题有很多时候是文件系统的DBR或MBR区有问题,原因是U盘以一个大的缓冲块做为一次读写的单位,非正常热插拔后,很容易使缓冲区里的数据块来不及写或非正常写入,这时候破坏上述结构的机率是最大的。一般如果是这种情况可以100%恢复,只需重建好原先的结构即可。

  11. 数据恢复 Comments @ 16:08:59 on 2006-03-02

    另7楼的情况,可能不是软件的问题,容量的限制通常来至于两个方面:BIOS地址表示范围、操作系统对于硬盘读写中断(或API等)的地址表现范围。137GB是典型的一个限制,和数据恢复软件应无太大关系,你可能要考虑BIOS或操作系统是不是在寻址上有局限。
    欢迎参见我们的站点:www.sjhf.net(有广告嫌疑可删之,zymail@vip.sina.com)

  12. felix Comments @ 22:08:14 on 2006-06-18

    请问以下,如果mbr 扇区坏了,具体要怎样修复