图片来源:DBMS Internals
在我们的日常生活中,偶尔会出现这样的经历:辛苦下载的资料文件一不小心被误删,又或者正奋力在键盘上敲打,电脑突然黑屏。
遇见这种情况,先不用着急,因为真正的数据还在电脑里。
想要找回被误删除的文件,首先要了解下,电脑文件在我们点击删除后,到底跑哪儿去了?
电脑文件是如何进行保存的
在这之前,我们需要先了解几个概念。
电脑包括操作系统在内的所有文件都存储在硬盘上。而一般来说,无论哪种机械硬盘,都是由盘片、磁头、盘片主轴、控制电机、磁头控制器、数据转换器、接口、缓存等几个部分组成。
磁盘在格式化时被划分成许多同心圆,这些同心圆轨迹叫做磁道。
所有盘面上的同一磁道构成一个圆柱,通常称做柱面,每个圆柱上的磁头由上而下从“0”开始编号。
操作系统以扇区的形式将信息存储在硬盘上,每个扇区包括512个字节的数据和一些其他信息。一个扇区主要有两个部分,存储数据地点的标识符和存储数据的数据段。
了解了上述的概念,我们简单描述下文件读写的过程。
首先操作系统将文件存储到磁盘上时,按柱面、磁头、扇区的方式进行,即最先是第一磁道的第一磁头下的所有扇区,然后,是同一柱面的下一磁头。以此类推,一个柱面存储满后就推进到下一个柱面,直到把文件内容全部写入磁盘。
文件的删除过程是怎样的
现在我们知道了文件读写的大致原理,接下来就开始说说今天的正题——文件删除。
文件存储的物理形式就是把一些二进制数据保存在磁盘上,如果我们要删除某个文件,就像我们写作业用橡皮擦或者涂改液擦抹掉已有的文字一样。
但是要知道,电脑文件的读写首先是高速和频繁的,拷贝一部电影,一般至少都要十几秒起,反过来想想,假如要删掉硬盘里的某部电影,如果按照涂改液修改作业的原理,我们得用新的数据覆盖它,如果是这样,岂不是删个电影都要几秒钟起,这样无论是对计算机本身还是电脑用户而言都是不合理的。
所以,计算机的操作系统(如大家常用的windows10)一般删除文件只是删除对文件的引用,把文件曾经所占的磁盘物理空间在逻辑上释放出来。后面如果有新的数据存储,直接在此基础上进行覆盖就好了。所以到这里,我们应该清楚了一点,如果你的文件意外删除或者损坏等,请马上停止任何写入操作。
在硬盘上,都存储着一张文件分配表FAT,该表记录每个文件存储在磁盘的具体地点,我们可以理解成新华字典的目录一样,写明了每个字对应所在的页码,FAT的作用也大致如此。
我们在删除文件时,操作系统只是修改了这个文件的文件名的前两个代码,同时在与之对应的表中文件名称做上了删除标记。
对于这一点,我们可以理解成硬盘上这个文件区域被打上了“拆迁”标记,并在地图上抹掉了它存在的坐标,但它其实还在那。
在我们需要新的空间进行存储时,任何被打上“拆迁”标记的区域都可以用于存储新的数据,即被新数据覆盖。
那么自然地,只要存储原来文件信息的扇区没有写入任何新的数据,所有的原文件内容依然存在。
所以,至此我们清楚了:电脑中删除掉的文件,在没有被新的数据覆盖之前,依旧存在于你的硬盘上。
已删除的文件是否可以恢复
到这里我们已经差不多了解了文件删除的大致情况,是否可以逆推下文件恢复的原理呢?
其实很简单,文件恢复的思路就是查找分析磁盘上的文件头,找出其中做过删除标记的文件并尝试重写其被改写的两个代码,进而进行数据恢复。
目前市面上文件恢复软件的原理大致一样,区别是它们对文件头的扫描以及恢复分散存放的文件数据能力不同。
如果想要真正删除掉某个文件,应该怎么做呢?你可以通过专业工具软件在删除的文件区域全部写入二进制中的0,又或者可以手动用其他垃圾文件进行覆盖硬盘操作。
(据微信公众号“数字北京科学中心”)