恢复Windows 系统文件被删除的技巧
如果只能使用windows本身提供的工具,那么我们可以认为清空回收站之后,被删除的文件已经彻底清除了。不过事实并非如此,只要有专用的硬件和软件,即使数据已经被覆盖、驱动器已经重新格式化、引导扇区彻底损坏,或者磁盘驱动器不再运转,我们还是可以恢复几乎所有的文件。
一、磁盘如何保存数据
要理解如何恢复已删除的数据,首先要搞清楚磁盘如何保存数据。硬盘驱动器里面有一组盘片,数据就保存在盘片的磁道(track)上,磁道在盘片上呈同心圆分布,读/写磁头在盘片的表面移动访问硬盘的各个区域,因此文件可以随机地分布到磁盘的各个位置,同一文件的各个部分不一定要顺序存放。
存放在磁盘上的数据以簇为分配单位,簇的大小因操作系统和逻辑卷大小的不同而不同。如果一个硬盘的簇大小是4 k,那么保存1 k的文件也要占用4 k的磁盘空间。大的文件可能占用多达数千、数万的簇,分散到整个磁盘上,操作系统的文件子系统负责各个部分的组织和管理。
当前,windows支持的硬盘文件系统共有三种。第一种是fat,即所谓的文件分配表(file allocation table),它是最古老的文件系统,从dos时代开始就已经有了。windows 95引入了第二种文件系统,即fat 32,windows nt 4.0则引入了第三种文件系统ntfs。这三种文件系统的基本原理都一样,都用一个类似目录的结构来组织文件,目录结构包含一个指向文件首簇的指针,首簇的fat入口又包含一个指向下一簇地址的指针,依此类推,直至出现文件的结束标记为止。
二、windows不能真正清除文件
在windows中,如果我们用常规的办法删除一个文件,文件本身并未被真正清除。例如,如果我们在windows资源管理器中删除一个文件,windows会把文件放入回收站,即使我们清空了回收站(或者不启动回收站功能),操作系统也不会真正清除文件的数据。
windows所谓的删除实际上只是把文件名称的第一个字母改成一个特殊字符,然后把该文件占用的簇标记为空闲状态,但文件包含的数据仍在磁盘上,下次将新的文件保存到磁盘时,这些簇可能被新的文件使用,从而覆盖原来的数据。因此,只要不保存新的文件,被删除文件的数据实际上仍旧完整无缺地保存在磁盘上。
因此,我们可以用工具软件绕过操作系统,直接操作磁盘,恢复被删除的文件。这类工具软件很多,easyrecovery就是其中的佼佼者。
如果不小心删除了某个重要文件,想要恢复,这时千万不要覆盖它。立即停用计算机,不要再向磁盘保存任何文件,包括不要把恢复工具安装到已删除文件所在的硬盘,因为任何写入磁盘的内容都有可能覆盖已删除文件释放的磁盘簇。如果必须安装恢复工具,可以安装到其他硬盘分区、软盘,或者干脆拆下硬盘到另一台机器上去恢复。
三、覆盖七次才能清除的蛛丝马迹
如果数据已经覆盖,用通常的恢复工具就无能为力了,但这并不意味着我们绝对不能挽救丢失的数据。读取硬盘上被覆盖的数据通常有两种办法。
读/写磁头向磁盘写入数据时,它会将磁化数据位的信号调整到某个适当的强度,但信号不是越强越好,不应超出一定的界限,以免影响相邻的数据位。由于信号强度不足以使存储媒介达到饱和的磁化状态,所以实际记录在媒介上的信号受到以前保存在同一位置的信号的影响,例如,如果原来记录的数据位是0,现在被一个1覆盖,那么实际记录在磁盘媒介上的信号强度肯定不如原来数据位是1的强度。
专用的硬件设备能够精确地检测出信号强度的实际值,将这个值减去当前数据位的标准强度,就得到了被覆盖数据的副本。理论上,这个过程可以向前递推七次,所以如果要彻底清除文件,必须反复覆盖数据七次以上,每次都用随机生成的数据覆盖。
第二种数据恢复技术的依据是,磁头每次读/写数据时,不可能绝对精确地定位在同一个点上,写入新数据的位置不会刚好覆盖在原来的数据上。原有数据总是会留下一些痕迹,利用专用的设备可以分析出原有数据的副本--称为影子数据。当然,如果我们反复执行覆盖操作,原有数据的痕迹也会越来越弱。
影子数据:被覆盖的数据总是与新写入的不离左右,就象人的影子总是紧跟着人,因此被覆盖的数据就称为影子数据。
通常而言,能够恢复已删除、覆盖的数据应该算是一件好事,当然,某些必须彻底清除数据的场合除外。这方面最为著名的标准是美国国防部订立的磁盘清洗规范,它要求数据必须覆盖三次:第一次用一个8位的字符覆盖,第二次用该字符的补码(0和1全反转的字符)覆盖,最后用一个随机字符覆盖。不过这个清洗方法不适用于包含高度机密信息的媒介,这类媒介必须进行消磁处理,或者销毁其物理载体。当然,对于大多数场合来说,简单的覆盖处理已经足够。
下一篇: python根据文件大小打log日志