哎,今天修改完毕设论文,就把以前的那些给删了。结果吃完饭回来,发现修改好的那个也不见了。真是悲剧,眼看后天就要答辩了……一把泪啊。第一反应就是看能恢复不。百度了一下,还真的有相关的文章,最后用ntfsundelete这个软件找回了删除的文件。感觉这个软件不错,所以就认真看了一下man文档,学习了一下这个软件。此处总结一下。

  1. 适用范围:此小工具仅适用于恢复ntfs文件系统的分区。关于ext2、ext3、ext4的误删文件恢复方法,请看其他相关文章。(PS. 该小工具是ntfs-3g里面带的一个小工具。所以安装的时候,装ntfs-3g即可,装ntfsundelete可能找不到该软件。而且,好像有一个专门的网站做一个叫NTFS Undelete的恢复软件,这个软件仅仅是windows下面用的,和linux下的ntfsundelete不同)。

  2. 该软件有三种运行模式:scan,undelete,copy。

    • scan模式。这种模式也是默认的模式。它只是简单的读取NTFS卷,找到那些被删的文件。然后列出这些文件的节点、名字、大小。

    • undelete模式。这种模式下,会根据正则表达式或者节点尽可能多的恢复你的数据,恢复出的数据保存在另外亦歌地方,注意,不是原来的地方哦。这一方面是出于安全考虑,另一方面是因为ntfs写支持的原因。

    • copy模式。这种模式是安装时可选的。他会将一个分区的MFT保存到一个文件。这是有在调试的时候会有用。


  3. 使用限制(不可恢复的情况)

  • 当一个文件被删除以后,MFT记录就会将其标记为未使用,代表磁盘使用情况的位图就会更新。如果不立即关电源,那么原来存放该文件的空间就可能被重写。更糟糕的是,MFT记录可能已经被用来记录其他的文件。如果是这些情况,那么文件将不可恢复。

  • 尽管一些文件的簇没有被使用,但是一些短生命周期的文件也可能不可恢复。(我存储论文的那个文件夹就不可恢复,但里面的文件都可恢复,还没搞懂为什么...j_0022.gif

关于语系。在NTFS文件系统中,所有的文件名都是以Unicode存储,ntfsundelete会将其转换为当前语系(比如我的是utf-8.zh)显示出来,这样就可以成功的支持和恢复一些中文文件。

扩展MFT记录。在极少数情况下,单个MFT记录可能不够大,不能存储描述一个文件的元数据(比如一个文件有成百上千个小部分)。这种情况下,将会出现一个MFT记录存储文件名,其他的存储数据信息。nftsundelete不会试图把这些记录拼起来,而是简单的显示所有没有命名的数据。

关于压缩和加密文件。ntfsundelete不能恢复压缩和加密文件。当扫描到这些文件时,将显示为不可恢复。

关于恢复文件的大小和日期。为了恢复一个文件,ntfsundelete必须读取文件的元数据。不幸的是,这些信息不总是完整的。当一个文件被删除了以后,元数据将处于一种易变的状态,比如文件大小可能为0;文件的时间可能被设置为它被删除的时间或者一个随机的时间。为了安全起见,ntfsundelete将会选取它扫描到的最大的文件大小写入磁盘。并尽量将文件的日期设置为它最后别修改的时间。

用法:ntfsundelete [options] device。关于option选项,此处列举几个常用的:

  • -d   该选项后面跟一个路径,表示恢复或者扫描结果要存储的地方

  • -f    该选项将会重写一些敏感的默认值,例如不要覆盖当前已经存在的文件。

  • -i    该选项表示恢复这些节点的文件,多个节点用逗号或者“-”隔开

  • -o   该选项指定恢复或者copy的结果的名字

  • -t    该选项指定从当前时刻起前t段时间内删除的文件,可以使用d、w、m、y后缀分别表示天、周、月、年。

  • -u    选择undelete模式。

    其他参数可以参看man文档。

下面是我恢复我的文件的过程,作为使用例子:

  1. 确定被删文件所在的分区(可以使用sudo fdisk -l查看,我的是在sda6分区)

  2. 卸载该分区(也可以使用-f参数,而不卸载,)

  3. 查看我最近1天该分区删除的文件

    sudo ntfsundelete /dev/sda6 -f -t 1d

    显示结果如下:
    135331113.png
    135456764.png
    大家可以看到,有的文件大小显示为0,那就代表不可恢复,比如我的那个“毕设2”文件夹。然后每个文件都列出了他的节点(node,第一列),根据节点号就可以恢复文件。最后一句表面我有54个文件可以恢复。

  4. 恢复文件。因为我的那个“毕设2”文件夹无法恢复,所以我就恢复两个word文件了(节点号分别为1800和1835,恢复到我的主目录下)。命令如下:

    sudo ntfsundelete /dev/sda6 -f -i 1800,1835 -d /home/allan

    因为必须使用root权限才可以执行该软件,导致恢复以后的文件也是root权限,所以恢复后再修改一下文件所以者即可:

    sudo chown allan 论文-排版-v2.docx 毕业论文表格-v2.doc

    这样就ok了。



           后天就答辩了,幸亏找回来了,不然……j_0012.gif