欢迎光临 Enjoy IT (ITECN.NET) 登录 | 注册 | 帮助

[HOW TO] 使用 WinHEX + RoboCopy 抢救坏硬盘数据

经过长达1年的折腾,硬盘终于寿终正寝了,出现XXX个坏道(事后检测出来的),不少坏道坏在了INDEX区域上,造成部分目录和文件无法被打开。

由于硬盘里面的数据是很重要的,因此必须先想办法抢救出来。这个时候不应该再对坏硬盘有任何的写操作,并且要尽可能的减少读操作。

经过一番深思熟虑,我们决定采用WinHEX先对硬盘进行磁盘克隆(WinHEX菜单Tools-->Disk Tools-->Clone Disk)。要进行这个操作,需要目标硬盘(好的银硬盘)比源硬盘(坏硬盘)大,否则是不能进行有效的克隆的。硬盘的克隆完成以后,就可以开始对克隆以后的硬盘进行读操作了。

由于是硬盘出现坏道,因此在磁盘克隆的时候,当WinHEX检测到坏道的时候,会用BAD SECTOR作为标记写入到好的硬盘,因此好的硬盘也会出现目录无法打开或文件无法读写的情况(这个只是文件系统受到损坏),要想抢救硬盘数据,就需要一个很好的文件复制机制。

  1. 首先被排除的就是使用资源管理器进行复制,因为当资源管理器碰到无法读的地方时,整个界面可能会陷入假死状态,而且一旦出错会终止所有的复制操作。
  2. 命令行下的copy和xcopy命令也是不行的,因为这2个命令当碰到无法读的地方时,会有一个超时,然后报告一个错误(我这里报告的是 CRC 数据冗余校验错误),然后退出文件的复制过程。
  3. 其他的一些复制工具大多数均有上述问题。

因此,我们需要一个工具当发现无法读取数据时能够自动跳过这个文件,而进行后面的操作。原本打算自己写一个工具,但是当我突然想起微软有一个现成的工具可以满足我的要求时,我放弃了自己写工具的想法。

RoboCopyWindows Resource Kit Tools 里面的文件同步工具,刚好能够满足我的需求。

RoboCopy,一个功能极其强大的文件同步工具(不仅仅是复制了,已经上升到文件同步的高度),能够按照需求进行各种各样的文件复制、同步操作,包括:

  • 文件复制断点续传
  • 自动判定源文件和目的文件是否相同,是否需要拷贝
  • 当源目的发生变动时自动进行同步
  • 重试次数,当超过一定数目以后跳过这个文件进行后面的操作
  • 按照源目的的文件结构进行复制(类似于XCOPY)
  • 复制一些特殊属性
  • 目的文件和源文件的文件同步操作
  • ……

功能非常的强大,在今天下午的操作中,在RoboCopy的帮助下,我成功的完成了从受损硬盘的克隆版本里面拿到了尚未受损的数据(40GB)。之所以RoboCopy能够做到,是因为RoboCopy有一个机制:重试和放弃机制,当RoboCopy发现源文件无法被复制的时候,会根据用户的设置进行一个重试(默认是100,两次之间的间隔时间是30秒),对于部分受损的硬盘来说,这个功能刚好可以满足跳过损坏的文件而拷贝后面正常的、没有受损的文件。相比之下,XCOPY就没那么方便了。

完成数据的复制工作以后,我怀着非常好奇的心情简单的看了一下RoboCopy的工作原理,不看不知道,一看吓一跳。从引入表分析,除了使用到了2个没有在MSDN里面完全公布的API:BackupWrite和BackupRead(这2个API可以在Platform SDK的示例代码里面找到使用方法),其余的API均是大多数Win32开发者经常使用的。微软能够把这些最最常用的API用到如此的地步,的确让人佩服。

关于RoboCopy的更多的使用技巧,还是请大家自己发掘了,呵呵。

已发表 2006年4月12日 20:58 作者 smallfrogs
归档在:

评论

# re: [HOW TO] 使用 WinHEX + RoboCopy 抢救坏硬盘数据

2006年4月13日 10:45 by junxiulee
3月份的Winmag上有一篇RoboCopy文章,写的很全面的。

这个工具的确很强。

# re: [HOW TO] 使用 WinHEX + RoboCopy 抢救坏硬盘数据

2006年4月15日 15:31 by kvirus
来看一下修复硬盘
该帖子已禁止评论