Intro – 杯具的移动硬盘
前天早上起来开机发现迅雷的下载才刚开始就全部自动暂停了,重新开了一个一试,仍然被暂停,右下角出现提示“临时文件不存在”。于是果断打开我的电脑,震惊地发现移动硬盘的分区都不见了!那一瞬间真的是冷汗直冒,毕竟超过500GB的东西就这么没了的话损失太大了,于是洗了把脸,振奋精神,踏上了数据恢复的道路。
UPDATE: 找到分区混乱的原因了…是因为笔者试图把ChromeOS的img镜像写进移动硬盘的一个分区,但是那个img里有很多分区,结果就是win32-image-writer把img往整个硬盘上烧,幸好半路出现Access in denied错误才没有把数据全都做掉。
所需工具预告:
- DiskGenius (中文) 或者 TestDisk (英文)
- diskpart (Windows自带命令行工具)
情况分析
既然在我的电脑中看不到分区的情况,那么首先需要了解硬盘处于什么状况。于是笔者果断打开了“磁盘管理器”,发现900多GB的移动硬盘被分成了好几份,由一个8MB分区,两个16MB分区,一个128MB分区以及余下的900+GB剩余空间组成。当时第一个反应是马上去股沟一下看看有没有前辈高人遇到过类似的疑难杂症,可是这个混乱的分区结构貌似独树一帜,所以没能找到状况雷同的硬盘。不过略一浏览隐约看到了“分区表重建”这么个重要的法门,算是摸出点儿门道了。
重建分区表
打开DiskGenius,在出现异常的那个硬盘上右键,点击“搜索已丢失分区(重建分区表)”,随后点击“开始搜索”。然后软件就会开始搜索并且在每次找到分区的时候提示确认,搜索完毕之后就可以写入了。
如果用TestDisk的话,基本是同理,不过操作步骤请参照此处。之所以推荐TestDisk是因为此软是首选的英文磁盘恢复工具,在国外论坛广受喜爱。
于是分区搜完,对照了一下和出错前没啥区别,就满怀欣喜的写入了。高兴地拔下再重新插入移动硬盘后,期待中的分区却迟迟没有被装载,此时笔者的心情顿时由晴转阴,只得郁闷地前往磁盘管理器再次查看情况。
写保护
在磁盘管理器中,被恢复的分区与印象并无二致地排列着,但是却没有分配盘符,于是心下大喜,右键点选“改变盘符”,然后随便添加了一个。果然,我的电脑中马上载入了新盘,可是并没有跳出自动播放的窗口,这令笔者隐约感到有些不妙。遂双击进入,嗯,不错,文件毫发无损,右键轻轻点击,咦?却发现“新建”和“新建文件夹”的选项已经不翼而飞。这情况略有点眼熟,就像……就像是以前写保护被打开了的SD卡一样,于是随手拖了个文件往里一放,果不其然,“无法复制 XXX: 磁盘被写保护”。至此,新问题已经被发现,接下来便着手解决。
按照惯例,第一件要做的就是股沟,令人高兴的是这一回算是遇到了FAQ (Frequently Asked Question 常见问题)了,搜索结果有几十万条,于是挑了几个看起来较为可信的进行浏览。略一观察,方法无非就是两个:
-
对注册表写入: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies] "WriteProtect"=dword:00000000
- 在设备管理器中选中移动硬盘,右键“属性”–“策略”–“更好的性能”–“确定”。
实测了一下,发现对于这块硬盘俩方法都没有效果,于是陷入了僵局。
在未找到解决途径的期间,笔者尝试了Ubuntu和Mac系统并发现在这两个系统下对同一块移动硬盘的装载和读写都毫无问题。所以猜测Windows与它们在硬盘的属性上有不同的标记方式。
直到今天早晨,在笔者习惯了Ubuntu的操作再抱着能治则治治不好拉倒的态度上Windows做最后一次挣扎的时候,股沟“分区 写保护”的时候发现了一个很重要的内容,就是“设置硬盘写保护设置方法”,其中提到了利用diskpart工具可以设置分区为写保护以防止被篡改。
抱着“解铃还须系铃人”的想法,笔者找到了某篇写保护设置方法文章中一笔掠过的恢复指令,开始对死马进行医治:
- 首先打开cmd,也就是命令提示符
- 输入diskpart,回车,会弹出UAC的提示,点确定进入diskpart的控制台
- 输入以下指令后回车:
DISKPART> list volume
此时会看到可分配卷标的分区列表,记下被写保护分区的序号。
- 输入以下指令后回车:
DISKPART> select volume N 回车(Enter) DISKPART> att volume
其中N替换为写保护分区序号,看到输出结果是Read-only: Yes,意味着分区确实处于可被解除的写保护状态。
- 输入以下指令后回车:
DISKPART> att volume clear readonly
结果会提示Successfully,就是成功了。
- 以上操作每次只能对一个卷(volume)进行修改,如果有多个要改的请回到第4步将N替换为其余分区的序号
笔者还遇到了相对特殊的情况,就是在list之后发现写保护的分区们同时在Info一栏有hidden的属性,于是用以下指令解除了:
DISKPART> att volume clear hidden
随后在磁盘管理器里重新分配卷标,正常读写,大功告成~