几天前咱家的MAC电脑重启之后无法进入系统,屏幕白白的,没有一丝瑕疵。这难道是硬盘挂了的节奏?
抱着侥幸的心理运行了一下磁盘检测程序,结果……
完蛋了,挂载失败了!
这就是硬盘要报废的前奏?还有好多有用的数据在里面呢,肿么办肿么办肿么办要死啦要死啦要死啦= =
对了,点击修复磁盘或许能解决问题哦,我好机智啊呵呵呵~
首先检查整个磁盘,似乎没问题。
下一步,修复挂载失败的分区。
修复(理所当然地)失败了,我的数据回不来了么?那我活着还有什么意思呢~!
嗯~不对,毕竟咱是专业修复数据的(大概吧),在没查明问题原因之前怎么能轻易去死呢,大家说是吧= =(你够
因为块硬盘的工作噪音略大,不小心认真听了一下硬盘工作的声音……矮油为什么这么有规律?莫非……
…………磁头难不成坏了?肿么办肿么办肿么办要死啦要死啦要死啦= =
但用这个软件却能找到丢失的分区。
点击Next后硬盘会一直试图在读取同一个地方的数据。直到进度条走到最右边,也仍然没找到任何丢失的数据。看来这条路行不通,接下来用WinHex看看硬盘里到底发生了什么。
我了个去扇区真的坏掉了!8个扇区呐~
回到家找了一块全新的硬盘重新分区格式化.用MACOS自带的格式化工具搞定磁盘后会出现这两个分区:
由于是从409640扇区开始出现CRC错误的,那这几个扇区应该存储的数据是什么呢?
首先看刚格式化完的这些分区:
此分区前n行都用0填充,直到如图这里。从此往后至0xFFF也仍然全是0。0x1000~0x3030全部填充FF。
上图是一小堆FF结束的地方。由于只有8个扇区CRC错误,那么下面我们重点关心0x0~0x1600中的数据。
暂时找不到比较系统的HFS+分区资料,于是先决定比较下我的备份系统的分区数据。
……找到了两块系统硬盘。先看第一块:
在这块硬盘中有如下几个分区:
要比较的分区数据是这样的:
再来看第二块硬盘:
分区信息如下:
要比较的分区数据是这样的:
看了半天没找到靠谱的规律,果然应该乖乖地去找资料吧大概(哭……
一不小心在APPLE开发者网站上找到了HFS+分区的资料,在分区结构中有这么一张图:
原来卷头在卷尾有备份~!看看什么情况先。
出现了一张貌似很完整的分区表,那么把这些数据覆盖掉CRC错误的部分会怎么样呢?说不定我的数据就都回来了,好激动~
原以为dd命令能忽略IO错误写入数据,结果失败了。没办法,只好更改策略了:
1、分区文件写入前8个扇区;
2、从源盘第9个扇区开始复制数据至目标盘第9个扇区开始。
完成上面的目标只需下面这几个指令:
if=file 输入文件名
of=file 输出文件名
skip=blocks 从输入文件开头跳过 blocks 个块后再开始复制
seek=blocks 从输出文件开头跳过 blocks 个块后再开始复制
确认设备文件后输入如下命令:
firedommatoMacBook-Pro:desktop firedom$ sudo dd if=this.s of=/dev/disk0s2
firedommatoMacBook-Pro:desktop firedom$ sudo dd if=/dev/disk5s2 of=/dev/disk0s2 skip=8 seek=8 conv=noerror,sync
……
没多久dd返回了一堆错误报告= =
照这趋势看得复制到明天呐,继续等吧= =
几天后,原来硬盘中的数据刚刚复制了byte,
dd命令效率为什么这么低啊,难道是参数设置不全?,算了,大概还有一天就复制完了。
欲知后事如何,请看下回分解~
终于等到数据复制完的那一天了。先来看看现在磁盘的状态:
提示“无效的B树”,完蛋了,B树坏掉了,还有个修么= =
果然磁盘修复程序也是这么想的。(MAC said:让你不备份数据,粗事了吧,呵呵活该~
其实硬盘里的那些数据还在原处,但是如果B树损坏的话,系统就会认为这块硬盘的其他部分也坏掉了= =用winhex搜索硬盘还能找到我曾经写过的代码呐。
下一步仔细研究下HFS+分区的资料,找回文件什么的先放一边好了。