Unix系统中知识讲解

系统 其他OS
由于Unix系统是一个多进程、多用户系统,它每一次开关机或硬件、通信故障等都会记录 系统日志、.sh_history等,硬盘现场被破坏的可能性极大。

Unix系统下删除一个文件的过程很简单,那就是释放索引节点表和文件占用的数据块,清空文件占用的索引节点,但不清除文件内容。但删除文件与删除目录的处理不尽相 同,不同命令删除文件的过程也不相同。

要恢复被删除的文件,只能根据删除后留下的东西去做文章。文件被删除后留下了什么呢?由上述分析可知: 其一,留下了文件的内容; 其二,留下了“现场”。文件的恢复策略只能从这两个方面来分析。

若现场已被破坏,即硬盘发生过写操作,那么只好根据内容来恢复。而且,由于Unix系统是一个多进程、多用户系统,它每一次开关机或硬件、通信故障等都会记录 系统日志、.sh_history等,硬盘现场被破坏的可能性极大。因此讨论按内容恢复的方法具有更大的实用价值。笔者经过实际探索得出下列四种恢复策略 供参考。

● 关键字搜索法

如果知道被删除的文件内容中若干字节的内容,而且该文件长度又不超过一个磁盘 块,那么可以在整个文件系统中搜索这一字节串,得出一个文件所在的数据块,将它们的块号填入一个i节点,即可恢复一个文件。

搜索文件系统的算法很简单,说 明如下: 首先,用“#df -k”命令确定文件系统的设备文件名(如/dev/root); 然后,用下述函数搜索,若成功,返回数据块号,反之返回-1。其中fsname是文件系统的设备名,如/dev/root,comp()参数是实现搜索条件的函数。
 

  1. long searchfs(char *fsname , int comp())   
  2. { FILE *fp;   
  3. char buf[1024];   
  4. long i=0;   
  5. fp=fopen(fsname,"r");   
  6. while (!feof(fp))   
  7. { fread(buf,1024,1,fp);   
  8. if (comp()) /* 检查是否符合搜索条件 */   
  9. return i; /* 若成功返回块号 */   
  10. i++;   
  11. }   
  12. fclose(fp);   
  13. return -1; /* 未找到符合条件的块,返回-1*/ }  

● 精确长度搜索法

如果知道被删除文件的精确长度(字节数),那么可根据一个数据块的大小,计算出文件的***一个数据块中数据的精确长度,该数据块中其他字节必然是全0。

根据这一条件,通过搜索整个文件系统,找出其中符合条件的数据块,若出现多个块符合要求,则还需要根据其他条件区分。但不管怎样,根据精确长度分析也是恢复 数据的一个策略。

● 内容关联法

如果知道文件内容中存在某种可实现的关联,例如文件的校验和或者文件内容的某种上下文关系,那么也可通过搜索整个文件系统,通过反复尝试寻找符合关联条件的磁盘数据块,进而恢复一个文件。

● 环境比较法

如果知道删除文件所在的文件系统的安装过程,那么,另找一台完全相同的机器,按原来完全相同的步骤安装相同版本的Unix系统和相应的其他软件。

可以想象,新的机器环境会与原来的环境基本相同,比较两个机器上相同文件系统的内容,可以推断出被删除文件的大致位置,至少可以大大减少查找的范围,一旦查找的范围足够小时,就可以用逐个观察和尝试的方法结合其他条件恢复数据,降低恢复的难度,增加恢复的可靠性。

Unix系统的中的如何来恢复被删除的文件的讲解就到这里了。

【编辑推荐】

  1. Unix系统是门艺术
  2. Unix系统中Cygwin的功能讲解
  3. SCO Unix磁盘块分配算法
  4. 3种找回nix删除文件方法
  5. Unix删除文件的找回方法
责任编辑:小霞
相关推荐

2010-05-04 16:33:39

Unix系统

2010-05-05 15:02:39

Unix系统

2010-04-30 18:20:23

Unix系统

2010-04-29 18:01:42

Unix服务器

2010-03-24 16:57:07

CentOS shel

2010-04-30 01:28:59

Unix系统

2010-05-06 14:24:56

Unix系统交换区

2010-05-06 09:26:44

Unix系统

2010-04-20 11:34:26

Unix操作系统

2010-05-05 17:46:32

Unix文件系统

2010-04-29 13:30:20

Unix操作系统

2010-05-04 17:17:46

Unix类

2010-05-11 18:03:28

2010-04-30 14:51:23

Unix系统

2010-05-05 13:13:55

Unix内核

2010-05-07 17:41:36

BSD Unix

2010-04-19 17:47:59

Unix操作系统

2010-04-19 17:34:02

Unix操作系统

2010-05-07 16:12:01

Unix系统

2010-04-20 10:12:40

Unix操作系统
点赞
收藏

51CTO技术栈公众号