由于本人不认识这些虚拟还原的软件作者,没有机会跟他们请教,所以以下关于其工作原理的探讨都是基于雨人的猜想和臆测,你如果对原理不感兴趣,完全可以跳过这个部分。
1.文件存储分配原理
我们知道,硬盘上最重要的数据区除了BOOT(引导区)外,是ROOT(根目录)和FAT(文件分配表),ROOT里面记录的是文件或子目录的属性、尺寸、日期以及它的起始簇(软盘里面是扇区)。FAT表里面记录的是每个簇的使用分配情况。
正常情况下,当我们向硬盘里面添加一个新文件,OS(操作系统)首先在ROOT里面将文件属性等填进去,在FAT表里面按一定算法找到一个空簇,将它标记为被该文件占用后,在ROOT里面将这个簇做为起始簇记录进去,然后将文件内容写入这个簇。如果文件没有写完,系统再在FAT里找一个空簇,将其标记为占用,然后在前一个簇的最后做一个指针向这个新的簇,形成一个单链表,接着再在这个新的簇里面继续写内容。如此重复直到文件内容完全记录完毕。最后系统根据占用的总簇数计算出文件尺寸,取出当前时间写到ROOT里面。
当我们删除一个文件的时候,系统实际上并不到每个簇去清除内容,而只是把ROOT里面文件名的首字符换成&符号,就是标记这个文件为删除,然后延着链表在FAT表中将该文件占用的所有簇释放(标记为空),这样新的文件写入的时候就可以使用这些被释放的簇。
当我们改变一个文件的属性或名字的时候,系统实际只在ROOT里面做一点改动而已。
子目录下的文件稍微复杂一些,它们的目录信息不是记录在ROOT里面,而是在子目录所指的第一个簇,实际是个SUBROOT。
实际硬盘的存储还要复杂得多,比如它的FAT表还有个副表,用作容错处理。我们这里只是为了讨论虚拟还原的原理,就不做深入讨论,只是简单说明一下。
2.虚拟还原的保护原理
根据雨人的臆测,虚拟还原的软件是这样工作的:
它首先将ROOT、SUBROOT以及FAT表都做个备份。然后,软件将备份的数据以及它的工作参数(密码、自动还原时间等)一起保存在硬盘上。这些空间也同时保护起来。
当用户删除文件、改名、改文件属性的时候,系统按正常情况处理,还原软件不做任何干涉。因为这些操作只针对ROOT和FAT表,并不去动数据区的任何数据。而这两个表软件已经备份过,需要的时候完全可以恢复。
最复杂的是添加新文件的情况。为了保护原来的数据,还原软件不允许在已经保护的簇进行任何的覆盖操作,即使现在的FAT表里面标记是空的,还原软件通过对照备份的FAT表,只要这个簇在表里面,它就会要求OS(操作系统)去找一个新的簇。这样数据区的数据就不会被覆盖。
其实这样说起来简单,但是OS不会知道系统里面已经装了个RECOVERY(虚拟还原软件),所以它还会按同样的算法把同一个簇找出来。这样的话会形成死循环,无法工作下去。
换一种方法,如果RECOVERY在删除文件的时候也不释放FAT表,那么OS找新簇的时候自然避开了已经保护的簇,但是有新问题:我们在做SCANDISK的时候会报出很多丢失的簇。
或者,RECOVERY根本就象个病毒一样,把一个虚假的ROOT显示给我们看,让我们以为文件已经删除了,其实硬盘上的ROOT它什么也不动。这很象以前一个叫DIR2病毒干的那样。
其实我一直就觉得RECOVERY象个病毒一样在工作,至少安装以后,系统的ANTI VIRUS(反病毒功能)必须DISABLE,否则开机就报警,无法工作。
当我们要恢复数据的时候,实际上相当简单,RECOVERY把备份的ROOT、SUBROOT以及FAT表全部恢复掉即可。这一点点内容,恢复起来自然神速。
我们无须深入了解RECOVERY到底是怎样去与OS协同工作的,不同的RECOVERY软件采用的方法可能都不尽相同,对系统工作的干扰程度也不尽相同。我们只要明白它确实是用系统保护的方式在工作,而且是保存了很少量的数据,能快速恢复被保护的内容,这就够了。
3.一点说明
前两节的内容讲原理比较多些,也比较枯燥,估计很多朋友都不愿意看下去。实在是有太多朋友包括雨人公司的技术人员一直在问这个问题:RECOVERY到底是怎样工作的?所以不厌其烦地写了那么多。
另外,保护方式的分类是雨人拍拍脑袋想出来的,没有参考过权威的著述,也许有点荒谬 。同样,硬盘的工作原理也只是雨人在很早前学过,脑袋里面还有点残留印象,写的时候也没去查有关资料,完全是看着天花板回忆着写的,谬误之处在所难免。希望大家领会精神即可。如能不吝指正,不胜感激!
下一节开始讲实战吧。
更多内容请看PCdog.com--数据保护方法 网络硬盘 硬盘数据恢复专题
