文件或目录损坏且无法读取 解决方法

2014-12-13, 我的电脑实在是太老了,跟了我6年了,经过了各种折腾,最近总是启动不了,要我把硬盘线好好插牢才能启动。然后今天启动的时候电脑进入检查硬盘的界面,我嫌弃它太慢,果断强制重启,结果悲剧发生了。

电脑中有两块硬盘,我们叫它h0和h1吧,操作系统安装在h0上,引导分区也是在h0上。进去之后h0的c、d、e三个盘是正常的。但是h1的f、k、l、m点击显示“文件或目录损坏且无法读取”。在我的电脑中也不显示总大小和剩余空间。

解决工具:

1.      大百度

2.      Diskgenius

3.      Winhex + diskgenius

 

解决过程:

1.      本着完事问百度的精神,查看了半天百度。也没有解决。如果类似:

http://jingyan.baidu.com/article/e9fb46e191f6157521f76606.html

的解决办法能够解决你的困惑那就不用往下看了。

 

2.      Diskgenius是我一直都在使用的硬盘神器,一直我以为它能解决一切问题。结果这次真的……跪了。我使用diskgenius打开硬盘h1,可以正常打开,里面的文件也全部没有问题,但是在“我的电脑”点击就是显示“文件或目录损坏且无法读取”。看来不是分区表的问题。

 

3.      使用chkdsk来修复,显示的错误信息是“无法获取卷的版本信息”,失败。使用dskgenius显示ntfs和卷guid均为0,难怪chkdsk不认识。

 

下面进入正题。

由于以上方法都不能解决问题,那么我只剩下去了解ntfs的机制这一条路可以走了。

 

通过以下资料我对ntfs有了大概的了解。

 

Ntfs文件系统解析,资料比较粗糙,我需要更加详细的资料。

http://www.360doc.com/content/10/1229/16/4573246_82348341.shtml

 

www.ntfs.com

ntfs资料比较全面,但是缺少了mft的相关详细资料。

 

http://www.intohard.com/jishujiaocheng/shujuhuifu_js/shu-ju-hui-fu-zhi-winhex-xiu-fu-wen-jian-huo-mu-lu-sun-huai-qie-wu-fa-du-qu.html

一个高手使用winhex修复硬盘的资料,给了我很多启发。

 

http://bbs.intohard.com/thread-108306-1-1.html

mft数据项的详细结构,正是我要的。

 

 

步骤:

 

1.      既然分区表没有问题,那么肯定是各个分区内有问题。通过以上我查到ntfs版本信息和guid等信息保存在$Volume文件中,那我就去找$Volume文件。然后想办法修改版本信息和guid信息。

我使用winhex打开了h1,然后打开f盘,结果发现里面没有$Volume文件,真的没有。

 

 

那么我使用winhex打开正常的c盘看一下$Volume中的内容,结果发现$Volume中什么都没有。

 

2.      详细查看资料发现事实上$Volume的文件的内容是存放在$mft中的第4个项中的,因为内容很少可以存放在$mft中。

使用winhex打开$mft,看到第一个项开始4个字节是FILE,表示正常,但是第二个、第三个、第4个都是BAAD,表示此项已经损坏。第二个是$msfmirr,是$mft前16个元数据文件的备份文件。第三个是log文件,第4个是$Volume文件。


3.      我们知道mftmirr保存了这几个文件的备份,所以我们去看备份是否完整,如果完整,那么就拷贝过来。

 

我们通过diskgenius能够查看到$mftmirr簇号,每个簇包含的字节数,相乘,然后使用winhex定位到字节。就看到了$mft前16个项的备份。

结果不幸是坏的。


 

4.      这就难办了,我们不知道这几个项目原来的数据是什么,这怎么办?

不管别的,我们先把$Volume弄好再说,但是$Volume原来的数据我们也不知道。

 

解决办法是将C盘完整的$Volume拷贝过来.

然后查看$mftmrr,重新构造难度比较大,于是通过细心观察,发现$mftmrr中的数据整体上是对的,只是整个数据向左偏移了两个字节。另外一个也是一样。想来应该是在写入数据的时候被我强行关机,一部分数据没有写进去。

将两个项的正常的数据拷贝,然后将头改成FILE,加上3000两个字节(16进制的)。再把数据粘贴。

 

最后执行chkdsk f: /f命令。然后硬盘就出来了。

你可能感兴趣的:(硬盘,修复,数据恢复)