You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何借助Testdisk识别的分区信息高效使用ddrescue读取GPT损坏硬盘的NTFS分区

如何借助Testdisk识别的分区信息高效使用ddrescue读取GPT损坏硬盘的NTFS分区

别急,你遇到的情况其实挺常见的——GPT主分区表挂了,但备用GPT还能被Testdisk识别,没法用ddru_ntfsbitmap没关系,咱们直接用Testdisk揪出来的分区范围给ddrescue「划重点」就行,省得它瞎扫浪费时间。下面一步步来:

1. 从Testdisk里提取分区的精确位置参数

首先回到Testdisk的操作界面,找到它识别出来的那个NTFS分区:

  • 选中目标分区后,按p进入分区预览(确认是你要救的分区没错)
  • 按i查看分区的详细信息,重点记下这两个数值:
    • 起始扇区(Start Sector):比如假设是123456
    • 扇区大小(Size in sectors):比如98765432
  • 另外确认一下硬盘的扇区大小,绝大多数情况是512字节,Testdisk里也会显示这个信息。

2. 用ddrescue只针对目标分区范围救援

拿到上面的参数后,就可以让ddrescue只专注于这个分区,不用扫整个硬盘了。假设你的故障硬盘是/dev/sda,要把数据救到rescue.img,日志文件是rescue.log,命令格式如下:

ddrescue --no-scrape /dev/sda rescue.img rescue.log -i $((起始扇区*扇区大小)) -s $((扇区数*扇区大小))

举个实际例子,如果起始扇区是123456,扇区数是98765432,扇区大小512,那命令就是:

ddrescue --no-scrape /dev/sda rescue.img rescue.log -i $((123456*512)) -s $((98765432*512))
  • 解释一下参数:
    • -i:指定救援的起始偏移量(用扇区数×扇区大小转换成字节)
    • -s:指定要救援的总数据大小(同样转成字节)
    • --no-scrape:如果你的硬盘只是分区表坏了,坏扇区不多,可以加这个参数跳过后期的“刮取”阶段,提速不少;如果有大量坏扇区,去掉这个参数让ddrescue尽力抢救。

3. 挂载救援后的镜像(或直接挂载分区范围)

救完之后如果想挂载查看数据,不用等整个镜像处理完也可以操作:

  1. 用losetup创建循环设备,指定分区的偏移和大小:
losetup -o $((起始扇区*512)) --sizelimit $((扇区数*512)) /dev/loop0 rescue.img
  1. 挂载这个循环设备(注意如果NTFS有错误,可能先需要修复):
mount /dev/loop0 /mnt/recovered

如果是直接想挂载原盘的分区范围,也可以用同样的losetup方法,把rescue.img换成/dev/sda就行,但强烈建议不要直接挂载故障盘读写,最好先做镜像再操作。

一些关键提醒

  • 操作故障盘前,尽量把它设为只读模式,比如用hdparm -r1 /dev/sda,避免进一步损坏数据;
  • ddrescue的日志文件rescue.log一定要保留,中途中断后可以直接用同一个日志续传,不用从头再来;
  • 如果有多个需要救援的分区,重复上面的步骤,每个分区单独救援,效率更高。

备注:内容来源于stack exchange,提问作者kahlil88

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 13:13:07