Linux 命令速查
文件管理 man ddrescue

ddrescue

数据恢复与磁盘镜像工具,支持断点续传

返回

补充说明

ddrescue 属于 GNU ddrescue,用于把故障磁盘尽可能完整地复制到镜像文件或另一块磁盘。它先快速读取正常区域,再反复重试坏区,并把进度记录在 mapfile 中,中断后可从断点继续。

与 dd 不同,ddrescue 遇到读错误不会直接放弃,而是记录位置、跳过并继续;-r 控制重试次数,-b 设置扇区大小,-n 只做第一轮快速拷贝。恢复后可用 ddrescuelog 分析 mapfile。

典型流程:先 -n 快速抓取正常区域,再用默认参数多次重试坏区,最后用 ddrescuelog -t 查看成功率。注意:对物理损坏磁盘,读操作本身有风险,应先评估并尽量只读操作;镜像目标空间要足够,输出设备会被覆盖。

mapfile 是纯文本,建议与镜像放在不同磁盘,并定期备份。若源盘正在恶化,优先抢救关键分区,而不是追求一次性完整镜像。

语法

ddrescue [选项] 输入 输出 [mapfile]

选项

  • -n / --no-scrape:只做第一轮快速拷贝,不刮擦重试;
  • -r 次数:坏区重试次数;
  • -b 字节:设置扇区大小;
  • -c 字节:设置每次读取的簇大小;
  • -i 位置:从输入文件的指定偏移开始;
  • -o 位置:写入输出文件的指定偏移;
  • -s 字节:限制复制的数据量;
  • -f:强制覆盖已存在的输出;
  • -d:对输入使用直接磁盘访问;
  • -m 文件:指定域 mapfile。

实例

# 先快速复制正常区域
sudo ddrescue -n /dev/sdb disk.img disk.map

# 对坏区重试 3 轮
sudo ddrescue -r3 /dev/sdb disk.img disk.map

# 直接克隆到新盘(输出已存在时需要 -f)
sudo ddrescue -f /dev/sdb /dev/sdc rescue.map

# 查看恢复统计
ddrescuelog -t disk.map

参考链接