如何使用ddrescue命令?

如何使用ddrescue命令?

ddrescue(全称 gddrescue)是 Linux 下专业的坏盘数据恢复工具,核心优势是可中断续传、智能跳过坏道、优先抢救可用数据。下面我会从「基础概念→核心命令→分步实操→避坑指南」全流程教你使用,新手也能轻松上手。

一、先明确 3 个核心概念(避免操作失误)

  1. 源设备:待恢复的故障盘 / 分区(如 /dev/sda/dev/sdb1

  2. 目标位置:恢复后的数据存储处(可以是:

    • 整块磁盘:/dev/sdc(需容量≥源盘)

    • 镜像文件:/mnt/ssd/disk.img(推荐,更安全)

  3. mapfile 日志文件:记录恢复进度的日志(如 /root/rescue.map),中断后可续传,绝对不能删除 / 修改


二、前置准备(必做)

1. 安装 ddrescue

# Debian/Ubuntu/Linux Mint sudo apt update && sudo apt install gddrescue # CentOS/RHEL/Fedora sudo dnf install gddrescue # Arch/Manjaro sudo pacman -S gddrescue


2. 确认源 / 目标设备名(关键!别搞反)

# 查看所有磁盘/分区信息 sudo lsblk # 示例输出(重点看NAME和SIZE列) NAME   SIZE TYPE MOUNTPOINT sda    1.0T disk  # 故障盘(源设备) ├─sda1  200G part / └─sda2  800G part sdb    2.0T disk  # 目标盘(存恢复数据) sdc    64G  disk  # U盘(别选错!)

核心原则:源设备(故障盘)只读,目标设备可写,绝对不能搞反


三、核心使用方法(分场景,从易到难)

场景 1:基础用法(健康盘 / 少量坏道,优先完整恢复)

目标:把 /dev/sda(1TB 故障盘)恢复为镜像文件 /mnt/ssd/disk.img,日志文件 /root/rescue.map

# 基础命令(通用最优参数) sudo ddrescue -d -b 4096 -n /dev/sda /mnt/ssd/disk.img /root/rescue.map

参数解释:

  • -d:直接磁盘访问(绕过系统缓存,速度更快、更稳定)

  • -b 4096:按 4K 扇区读取(匹配现代硬盘,避免读写效率低)

  • -n:「no-split」第一遍只抢好块,跳过坏道(最快拿到可用数据)


场景 2:进阶用法(大量坏道,兼顾完整度)

如果第一步抢完好块后,想尝试恢复坏道区域(慢,但能多救数据),执行第二遍命令:

# 第二步:重试坏道(最多3次,避免无限卡死) sudo ddrescue -d -b 4096 -r 3 --min-read-rate=1M /dev/sda /mnt/ssd/disk.img /root/rescue.map

新增参数解释:

  • -r 3:坏扇区最多重试 3 次(默认无限重试,改 3 次大幅减少耗时)

  • --min-read-rate=1M:读取速度低于 1MB/s 时自动跳过(避免卡死在极坏扇区)


场景 3:极端场景(物理故障 / 频繁卡死,优先保命)

如果磁盘异响、频繁卡死,放弃坏道,只抢能快速读取的数据:

sudo ddrescue -d -b 4096 -n --min-read-rate=512K --timeout=10s /dev/sda /mnt/ssd/disk.img /root/rescue.map

  • 新增参数解释:

    • --timeout=10s:单个扇区读取超 10 秒直接跳过

    • --min-read-rate=512K:低于 512KB/s 的区域直接放弃


场景 4:恢复到整块磁盘(而非镜像文件)

如果想直接把故障盘数据恢复到另一块空盘(需目标盘容量≥源盘):

# 源盘/dev/sda → 目标盘/dev/sdb(务必确认sdb是空盘!) sudo ddrescue -d -b 4096 -n /dev/sda /dev/sdb /root/rescue.map


四、关键操作说明

1. 中断与续传(核心优势)

  • 恢复过程中按 Ctrl+C 中断,下次执行完全相同的命令,会自动从断点继续:

  • # 中断后,再次执行原命令即可续传 sudo ddrescue -d -b 4096 -n /dev/sda /mnt/ssd/disk.img /root/rescue.map


2. 查看恢复进度

执行命令后,终端会实时显示:
  • rescued:已恢复数据量

  • errsize:坏道区域大小

  • current rate:当前读取速度

  • time remaining:剩余时间(仅参考,坏道多则不准)

3. 挂载镜像文件(恢复后查看数据)

如果恢复的是镜像文件,可挂载查看:

# 创建挂载点 sudo mkdir /mnt/recovered # 挂载镜像(假设镜像里的分区是第1个) sudo mount -o loop,ro /mnt/ssd/disk.img /mnt/recovered # 查看数据 ls /mnt/recovered # 卸载(看完后) sudo umount /mnt/recovered


五、避坑指南(新手必看)

  1. ❌ 绝对不要搞反源 / 目标设备:比如把 /dev/sda(源)和 /dev/sdb(目标)写反,会直接覆盖故障盘的剩余数据!

  2. ❌ 不要在恢复时挂载故障盘:故障盘只读(ddrescue 自动处理),挂载会增加磁盘负担,甚至加重损坏。

  3. ✅ 优先用镜像文件:恢复到镜像文件比直接恢复到磁盘更安全,即使操作失误也不会覆盖源盘。

  4. ✅ 目标盘选高速 SSD:避免目标盘成为瓶颈(比如用 U 盘存镜像,速度会被拖慢)。

总结

  1. ddrescue 核心用法是 sudo ddrescue [参数] 源设备 目标位置 日志文件日志文件是续传关键

  2. 新手优先用 -d -b 4096 -n 抢好块,少量坏道加 -r 3,物理故障加 --timeout--min-read-rate

  3. 恢复到镜像文件比直接恢复到磁盘更安全,避免操作失误导致数据二次损坏。

如果你的实际场景(比如源盘是 U 盘、目标是 NAS)有特殊需求,告诉我,我可以给你定制化的命令和操作步骤!



1、本站资源长期持续更新。
2、本资源基本为原创,部分来源其他付费资源平台或互联网收集,如有侵权请联系及时处理。
3、本站大部分文章的截图来源实验测试环境,请不要在生产环境中随意模仿,以免带来灾难性后果。

转载请保留出处:  www.zh-cjh.com珠海陈坚浩博客 » 如何使用ddrescue命令?

作者: 小编


手机扫一扫,手机上查看此文章:

一切源于价值!

其他 模板文件不存在: ./template/plugins/comment/pc/index.htm

未雨绸缪、居安思危!

数据安全、有备无患!

注意操作、数据无价!

一切源于价值!