使用“dd”进行救援后 - 该做什么?

使用“dd”进行救援后 - 该做什么?

我的外接设备突然坏了。虽然我不能确定,但​​它可能没有那么严重。

我刚刚尝试使用 ddrescue 将其恢复,直接恢复到一个大分区。

sudo dd if=/dev/sdb of=/dev/sda3 bs=4096 conv=notrunc,noerror,sync

它运行了几个小时,显示已复制了 160 bg。我没有制作映像,只是将 sdb 复制到 sda3。

虽然我没有听到任何噪音,但圆盘灯始终亮着。

因此,运行后我发现我保存到的分区丢失了标签并声称是空的。以下是信息,sda3 是我保存到的分区:

sudo fdisk -lu

Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907029168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x0005901e

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048     4294655     2146304   82  Linux swap / Solaris
/dev/sda2   *     4294656  1172654030   584179687+  83  Linux
/dev/sda3      1172654080  3907028991  1367187456   83  Linux
Note: sector size is 4096 (not 512)

在 Gparted 中,系统提示我此分区上的超级块已损坏。它确实提供了为分区分配新 UUID 的选项,但我尚未尝试过。

所以我现在不知道该怎么办,转移完成了吗?数据在这个分区上吗?

我认为在传输时安装了坏驱动器,我没有收到警告,所以没有注意到。我想我可以再复制一份光盘,但我确实想在这里小心一点。我有什么值得处理的东西吗?我能以某种方式进入这个驱动器吗?我知道扇区大小因 dd 而发生了变化,而且外部的错误现在出现在分区上。

但如何访问它?我应该制作一张图片吗?任何建议都将不胜感激。

答案1

dd终止后立即检查 的结果echo $?。必须是0!检查 的输出是否有明显错误。我在问题中dd没有看到 的大小。/dev/sdb

指定没有分区号的设备文件不会复制分区,而是复制整个设备(包括分区表)。要么您知道要恢复哪个分区,即指定/dev/sdaXif的参数dd,要么制作整个设备的图像(更好的想法),将其安装在循环设备下,例如使用 查找下一个空闲循环设备losetup -f,使用它losetup /dev/loopY /path/to/image.img并让内核识别分区,其中kpartx /dev/loopYp?应该?是您想要恢复的分区的编号,如问题中所述。

根据磁盘损坏的严重程度,即进一步读取是否会对其造成更大的损坏,以及存储设备上的空间大小,制作原始文件或副本的图像(结果将是副本的副本,但这可能会防止读取时损坏原件)。

加快速度/dev/sdb:当您使用的副本时/dev/sda3(仅在必要时使用),如果/dev/sdb仅为 160 GB( 的末尾/dev/sdb和 的末尾之间的差值/dev/sda3),则您正在复制大量无用的数据。如果您想跳过该步骤,请告知仅复制dd的长度和参数(在这种情况下是必读内容)。/dev/sdbbscountman dd

也许有一种方法可以通过一些调整来告诉内核/dev/sda3/包含分区表,但我认为这相当棘手且具有实验性。

答案2

制作图像是个好主意。数据中可能存在漏洞。但是一旦有了图像,就可以重新使用它。

  1. fsck,如果失败,请重试。
  2. 将分区复制到分区,将磁盘复制到磁盘。

    • 不要将 sdb 复制到 sda3,这是“磁盘到分区”,不正常。
  3. 如果您确实复制到更大的区域,并且 fsck 正常,则这可能是最好的选择,但您仍然可以从图像中挖掘十六进制和文本。(甚至可能是 jpeg)。

  4. 如果一切运行正常,并且您已移至更大的设备,则可以增加分区大小并“扩大文件系统以填充分区”。

相关内容