硬盘快挂了,先克隆再抢救:ddrescue 怎么用
SMART 报警、读盘卡顿的时候,别在坏盘上直接恢复数据。先做镜像,再对镜像动手。
硬盘开始出问题的时候,很多人第一反应是「赶紧把文件拷出来」。这个反应不算错,但顺序可以更好。
对一块不稳定的盘做文件级拷贝,会反复读取坏区域,越读越糟。正确的做法是先做整盘镜像。
为什么要做镜像
- 只读一次:镜像过程是顺序读盘,对坏盘压力最小;
- 可反复操作:拿到镜像后,可以慢慢尝试提取文件,不再折腾原盘;
- 可跳过坏块:工具会自动跳过严重损坏的区域,先把好数据抢出来。
ddrescue 就是干这个的,Linux 下最常用。
基本用法
先确认设备名(千万别搞错):
lsblk
然后镜像:
ddrescue -d -r3 /dev/sdb /mnt/存储/坏盘镜像.img /mnt/存储/mapfile
参数含义:
-d:直接访问设备,绕过缓存;-r3:对坏区域重试 3 次;- mapfile:记录进度,中断后可以续跑。
分阶段跑更稳
一次性跑完可能很慢。常用策略:
# 第一遍:快速抓好数据
ddrescue -n /dev/sdb 镜像.img mapfile
# 第二遍:补读坏区域
ddrescue -r3 /dev/sdb 镜像.img mapfile
第一遍遇到坏块立刻跳过,先把能读的读出来;第二遍再回头啃硬骨头。这样即使盘中途彻底挂了,也已经拿到大部分数据。
镜像之后
- 挂载镜像:
mount -o loop 镜像.img /mnt/检查,然后像正常目录一样翻文件; - 提取文件:常用的有 photorec、testdisk,能按文件类型扫描;
- 保留镜像:在确认数据都取出来之前,别删。
适用场景
- 硬盘 SMART 报警但还能识别;
- 读某些文件时卡死、报 I/O 错误;
- 意外格式化之后(先镜像再恢复);
- 阵列重建失败,想从单盘抢救。
注意
- 不要在坏盘上写任何东西,包括修复工具;
- 镜像空间够不够:整盘镜像需要等同于盘容量的空间,可用压缩或截断;
- 坏块很多时,镜像可能跑几十小时,要有耐心;
- 机械盘异响(咔哒声):立刻断电,别再通电尝试,找专业恢复。
常见的坑
在盘上直接跑恢复软件:越跑越坏。
镜像写到同一块盘:空间和寿命都不够。
忘了 mapfile:中断后只能从头再来。
以为镜像就是备份:镜像只是抢救的第一步,救出来的文件还是要正常备份。
小结
遇到快坏的盘,顺序是:停止写入 → 整盘镜像 → 从镜像里提取。
镜像这一步看起来慢,实际上是最省时间的选择。
留言