硬盘损坏,抢救数据
上两周坏了一个硬盘。——这还是第一次把硬盘用坏。虽然此前20天备份过一次,可想到要重做这二十天的工,很是沮丧。好在经过两三天的尝试,全部恢复了。现记录如下。
前兆#
大概两三个月前,有天晚上关机着急,没等主机关闭就关了点。结果导致固态C盘损坏。换盘,重装了系统。这跟今次硬盘损坏大概没有关系,存疑。
这次D盘损坏前大概两三周,一个正在操作的问题突然报出无法找到。到所在位置去看,文件夹打不开了。用win10自带的磁盘“差错”工具处理后,在根目录隐藏文件夹found.000
中找到了恢复的文件夹和文件。
这大概就是一个前兆,但当时没太在意,没有备份文件。
磁盘崩溃过程#
当天写笔记,编译为html时突然报刚才写的文件找不到,紧接着很多文件都无法找到。然后win10系统卡死,无法正常关机。
关电重启后报系统检查错误(具体记不清了),很久无进展。
再关电重启,停留在主板logo页面,下面的圈长久不停。
以上两种状态常交替出现。
拆下硬盘能正常启动#
拆下D盘后能正常启动。
买了一个硬盘底座,连接后,用各种磁盘工具、数据恢复工具都无法处理,多半卡死。
硬盘底座有个硬盘对拷的功能,不知道工作原理,尝试了一下,很久没看到进展,就没敢再用。
用U盘、Ubuntu制作Linux live USB系统#
根据这个网页的提示,制作了一个U盘的Ubuntu的Linux live USB系统。——这个网页推荐Knoppix LiveCD系统,但我不熟悉。
具体制作方法可以看这个简单教程。主要包括两步:
- 安装Rufus;
- 用一个U盘制作Ubuntu系统,也就是直接用U盘启动、运行,不需要安装的系统。Rufus很容易用,只看这里的设置就可以:
启动Ubuntu,安装软件#
做好后插在电脑上,准备启动。最好只留下问题盘和一张容量等于或大于问题盘的空磁盘(用于存储恢复的数据),sata连接,其余的全部拆除,以免误操作。
把启动时更改biso的引导顺序,通过刚才的U盘引导。启动后不要操作问题盘和存储数据用的盘,不要装载!以免出问题。
进入Ubuntu系统后先添加国内的程序源,以便安装程序。也就是在源文件/etc/apt/sources.list
后添加源列表。比如阿里源:
1 2 3 4 5 6 7 8 9 10 |
|
然后更新系统:
1 2 |
|
安装gddrescue
。注意软件包名字前有个g,但是命令没有g,只是ddrescue
。
1 |
|
还可以安装通过图形查看进度的工具ddrescueview
:
1 |
|
使用ddrescue
复制、抢救数据#
先查看磁盘列表:
1 |
|
或者:
1 |
|
磁盘通常显示为/dev/sda
, /dev/sdb
这样的格式。其下后还可能显示分卷,如/dev/sda1
,/dev/sda1
。下面处理时,应该操作整盘,而不是分卷。
这里是ddrecue的手册,详细解释了算法和处理过程,有助于你在漫长的等待过程中免于焦虑。
ddrescue有很多选项,但我们通常只需要两个步骤。
第一步,快速抓取大部分无错区域:
1 |
|
注意,选项-f
意味着存储盘上的内容会被覆盖。
rescued.log
是记录进度的文件。如果临时停止,重新开始后,ddrescue可以根据这个文件接着做。Linux live USB系统重启后会抛弃用户设置、文件,所以这个文件应该通过在线邮箱等方式妥善保存。
可以使用ddrescueview查看进度(可以用-r 30s
这样的选项来设置刷新间隔):
1 |
|
效果如下:
我的问题盘是1T容量,数据大概900G,完成第一步耗时近6小时。
第二步,尝试从有错区域中“刮取”,也就是最大限度地恢复数据:
1 |
|
选项-r 1
表示重复次数。这个步骤很耗时,如果时间允许重复两三次也是可以的。这一步我只做了一小会儿。拆下来发现绝大多数已经恢复,就不再做了。
使用win10磁盘工具查错#
复制得到的磁盘是有错误的,我使用win10磁盘工具查错后,在根目录的隐藏文件夹found.000
中找到了很多恢复的文件、文件夹。再通过TC,过滤时间后,得到未备份的内容,加到备份中。
(可能ddrescueview有相应的除错工具,我没有注意到。)
后来使用文件时,发现个别文件看起来正常,但无法打开。所以,重要文件最好逐一打开看看。
赶紧买了个4T的硬盘,所有文件都备份在这里。还重新打开谷歌硬盘,把重要文件和最近正处理的文件备份到网上。问题盘暂时还留着,后面如果再发现问题,还可以更精细地处理。