如果文件被删除,现场未被破坏(即文件被删除后硬盘未发生过写 *** 作),而且假定只删除了一个文件,那么可根据系统的分配算法进行恢复。因为系统建立一个文件时,必定根据某一特定的分配算法决定文件占用的数据块位置。而当该文件被删除后,它所占用的数据块被释放,又回到系统的分配表中,这时如果重新建立一个文件,系统根据原来的分配算法分配出的数据块必定跟该文件原来占用的数据块一致,而且我们知道,UNIX文件最后一数据块尾部多出的字节是全部置0的,据此只要调用系统的数据分配算法,在系统中一块块的申请数据块,因为UNIX文件最后一个数据块尾部多出的字节全部为0,所以,只要发现一个分配出的数据块中尾部全为0,即可认为文件结束,由此可确定文件长度和内容,进而实现恢复。方法如下:
⑴申请一个索引节点,即向系统申请创建一个新文件名而不写入任何内容。如:#>/tmp/xx
⑵调用系统分配数据块算法getnextfreeblock()得到一个数据块号,记入某一地址表变量中。
⑶读出这个数据块,判断其尾部是否全部连续为0,若不是,则回到(2),若是,则进行(4)。
⑷首先用系统函数fstat得到/tmp/xx的i节点号,然后将(2)步所得的地址表写入索引节点的地址表中(注意间址问题),并根据数据块个数和最后一块中有效数据长度计算出文件大小,写入i节点的di_size字段。
⑸回写系统的索引节点表即可。
需要说明的是,第一,系统分配数据块的算法因不同的UNIX版本而不同;第二,有的UNIX如SCO UNIX 5.0版,其空闲数据块的分配和回收是使用一种动态链表的数据结构来实现的,它们的文件恢复更加容易,只要在空闲链表中的表尾去寻找即可,笔者另行描述。
2. 根据内容恢复。
若现场已被破坏,即硬盘发生过写 *** 作,那么只好根据内容来恢复。而且,由于UNIX是一个多进程、多用户系统,它每一次开关机或硬件、通讯故障等都会记录系统日志、.sh_history等,硬盘现场被破坏可能性极大。因此讨论按内容恢复的方法具有更大的实用价值。笔者经过实际探索得出下列四种恢复策略供参考。
⑴关键字搜索法
如果知道被删除的文件内容中若干字节的内容,而且该文件长度又不超过一个磁盘块,那么可以在整个文件系统中搜索这一字节串,得出一个文件所在的数据块,将它们的块号填入一个i节点,即可恢复一个文件,搜索文件系统的算法很简单,说明如下:
a. #df -k 确定文件系统的设备文件名(如/dev/root)
b.用下述函数搜索,若成功,返回数据块号,反之返回-1。其中fsname是文件系统的设备名,如/dev/root,comp()参数是实现搜索条件的函数。
long searchfs(char *fsname , int comp())
{
FILE *fp
char buf[1024]
long i=0
fp=fopen(fsname,"r")
while (!feof(fp))
{
fread(buf,1024,1,fp)
if (comp()) /* 检查是否符合搜索条件 */
return i/* 若成功返回块号 */
i++
}
fclose(fp)
return -1/* 未找到符合条件的块,返回-1*/
}
⑵精确长度搜索法
如果知道被删除文件的精确长度(字节数),那么可根据一个数据块的大小,计算出文件的最后一个数据块中数据的精确长度,该数据块中其他字节必然是全0。根据这一条件,通过搜索整个文件系统,找出其中符合条件的数据块,若出现多个块符合要求,则还需要根据其他条件区分。但不管怎样,根据精确长度分析也是恢复数据的一个策略。
⑶内容关联法
如果知道文件内容中存在某种可实现的关联,例如文件的校验和,或者文件内容的某种上下文关系,那么也可通过搜索整个文件系统,通过反复尝试寻找符合关联条件的磁盘数据块,进而恢复一个文件。
⑷环境比较法
如果知道删除文件所在的文件系统的安装过程,那么,另行找一台完全相的机器,按原来完全相同的步骤安装相同版本的UNIX和相应的其他软件,可以想象,新的机器环境会与原来的环境基本相同,比较两个机器上相同文件系统的内容,可以推断出被删除文件的大致位置,至少可以大大减少查找的范围,一旦查找的范围足够小时,可以用逐个观察和尝试的方法结合其他条件恢复数据,降低恢复的难度,增加恢复的可靠性。
UNIX系统下文件系统恢复的具体实现依赖于不同 *** 作系统和不同版本的具体文件系统结构和磁盘块分配算法。本文试图总结出一种一般性的思路和策略,限于篇幅,不能详细讨论它们的具体实现过程。
如果数据丢失后,我们又对保存该文件的磁盘进行了写入 *** 作,发生数据覆盖的直接后果是搜索不到丢失的文件或是恢复后的文件打不开、乱码、空白、系统提示已经损坏等。数据写入具有随机性,具体哪些文件被覆盖是不可控的,所以在数据被成功恢复之前应尽量避免一切写入 *** 作。此外,我们还需要了解自己电脑里的硬盘是固态盘还是机械盘。由于固态硬盘默认自带并开启TRIM指令,此特性致使删除的文件难以恢复。从备份中还原丢失的文件是最理想的文件恢复方式,但是很多用户没有备份数据的习惯。没有备份的时候,我们就需要借助数据恢复软件找回丢失的文件。这里提示一下大家,虽然文件在删除前是可以正常打开的,但这不代表丢失后文件一直是正常的。在不确定数据是否被覆盖了以及是否有损坏的时候,可以先用软件搜索到文件后通过预览文件判断文件的可恢复性。以下分享电脑删除文件恢复具体过程(以嗨格式数据恢复大师为例):步骤1:首先在电脑中运行【嗨格式数据恢复大师】这个专业数据恢复软件,打开后就可以看到主页中有多个恢复功能,点击其中的“误删除恢复”功能;步骤2:选择好模式后,还需要选择被删除文件原来的保存位置,选好点击“开始扫描”按钮;步骤3:这样嗨格式数据恢复大师软件开始扫描电脑数据,扫描好找到并选中恢复文件,点击“恢复”就可以。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)