Unix删除文件的找回方法
创始人
2024-06-29 20:01:02
0次

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

Unix删除一个文件的具体步骤是: 根据文件i节点的地址表逐一释放文件占用的磁盘数据块,然后清空相应的节点,最后释放i节点。 删除一个目录的过程是: 首先逐一删除目录里的所有文件,然后删除目录。目录本身也是一个文件,故Unix删除方法与删除文件一致。

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

1.根据磁盘现场进行恢复

如果文件被删除,现场未被破坏(即文件被删除后硬盘未发生过写操作),而且假定只Unix删除了一个文件,那么可根据系统的分配算法进行恢复。因为系统建立一个文 件时,必定根据某一特定的分配算法决定文件占用的数据块位置。

而当Unix删除该文件后,它所占用的数据块被释放,又回到系统的分配表中,这时如果重新建立一个 文件,系统根据原来的分配算法分配出的数据块必定跟该文件原来占用的数据块一致。

而且我们知道,Unix文件最后一个数据块尾部多出的字节是全部置0的, 据此只要调用系统的数据分配算法,在系统中一块一块地申请数据块,只要发现一个分配出的数据块中尾部全为0,即可认为文件结束,由此可确定文件长度和内 容,进而实现恢复。方法如下:

● 申请一个索引节点,即向系统申请创建一个新文件名而不写入任何内容。如: #>/tmp/xx。

● 调用系统分配数据块算法getnextfreeblock()得到一个数据块号,记入某一地址表变量中。

● 读出这个数据块,判断其尾部是否全部连续为0,若不是,则回到第二步,若是,则进行第四步。

● 首先用系统函数fstat得到/tmp/xx的i节点号,然后将第二步所得的地址表写入索引节点的地址表中(注意间址问题),并根据数据块个数和最后一块中有效数据长度计算出文件大小,写入i节点的di_size字段。

● 回写系统的索引节点表即可。

需要说明的是: 第一,系统分配数据块的算法因不同的Unix版本而不同; 第二,有的Unix如SCO Unix 5.0版,其空闲数据块的分配和回收是使用一种动态链表的数据结构来实现的,它们的文件恢复更加容易,只要在空闲链表中的表尾去寻找即可。 Unix删除的文件找回方法,我们就讲解到这里。

【编辑推荐】

  1. Unix操作系统脚本的讲解
  2. Unix文本文件知识讲解
  3. Unix操作系统进程知识学习
  4. Unix操作系统中DOS文件知识
  5. Unix文件系统自动安装与拆卸

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
只需三步,让你掌握阿尔法路由器... 请参照以下阿尔法路由器设置方法,通过浏览器进入及设置宽带路由器。经过这三个步骤的设置,基本上能够熟悉...
如何更省钱? 近期特价热门硒鼓... 如今激光打印设备已经成为商务或企业的绝对主力办公设备,但采购者往往忽视了激光打印设备所用的耗材,相对...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...