如何使用 ubuntu 将故障硬盘克隆到新硬盘

如何使用 ubuntu 将故障硬盘克隆到新硬盘

我有一块 1TB 故障硬盘、一块全新的 1 TB 硬盘、一个可启动的 ubuntu usb 和一台可以运行的计算机。

我需要的是一个逐步的过程,教我如何安全地将尽可能多的数据从一个驱动器克隆到另一个驱动器。注意:驱动器出现故障。

我知道我需要启用 Multiverse,然后安装并使用ddrescue才能完成任务。但我在网上到处找,都找不到完成任务的直接途径。我知道这一切都可以在终端内完成,这就是我所寻求的。

我怎样才能做到这一点?

答案1

警告:这是高度建议您ddrescue从实时 USB 或类似设备运行,而不是在损坏的硬盘上运行。过度使用损坏的硬盘可能会导致更多(甚至更糟!)数据丢失。

首先,您需要启用universe存储库:

sudo add-apt-repository universe

在 Ubuntu 18.04(及更高版本,本指南假定)上,这也将自动更新您的软件包存储库。

一旦启用universe,我们就可以继续安装ddrescue

sudo apt install gddrescue

接下来,找到您的分区/磁盘数据。这是通常可以通过lsblkblkid命令实现。在我的(示例)系统上,我们将克隆/dev/sda/dev/sdb一旦我们有了名字,我们就可以运行 ddrescue:

sudo ddrescue -d -r3  /dev/sda /dev/sdb /path/to/rescue.log

我们将使用-d选项直接读取磁盘,并使用选项-r3重试三次坏块,然后再继续。rescue.log是一个(可选)日志文件,用于在恢复中断时重新启动恢复。您可以将其存储在内存中,但强烈建议将其存储在外部(第三个)USB 驱动器中。

让它运行,希望你的驱动器能够恢复。

有关更多选项,请在安装后阅读手册页ddrescue。您可以使用以下命令访问它:

man ddrescue

磁盘满载ddrescue是可行的,但由于给磁盘带来不必要的压力,因此有些不受欢迎。如果可能的话,尽量只恢复必要的最少数据量 - 例如单个分区。为了做到这一点,你需要创建分区首先在目标驱动器上。

答案2

我建议你使用`ddrescue'

sudo add-apt-repository universe
sudo apt update
sudo apt install gddrescue

这是一个可以分两步进行克隆的工具,

  • 快速克隆良好(且易于读取)的扇区的步骤
  • 克隆扇区的缓慢步骤,很难读取,但如果缓慢而反复地尝试,可能仍然可以读取。

安装后ddrescue,有一个很好的教程

info ddrescue

开始工作前请仔细阅读。您可以按照其中一个示例的说明进行工作。

示例 1:将 /dev/sda 中带有两个 ext2 分区的整个磁盘全自动恢复到 /dev/sdb。注意:您不需要事先对 /dev/sdb 进行分区,但如果 /dev/sda 上的分区表损坏,则需要以某种方式在 /dev/sdb 上重新创建它。

 ddrescue -f -r3 /dev/sda /dev/sdb mapfile
 fdisk /dev/sdb
 e2fsck -v -f /dev/sdb1
 e2fsck -v -f /dev/sdb2

示例 2:将 /dev/sda2 中的 ext2 分区恢复到 /dev/sdb2。注意:您需要先使用 fdisk 创建 sdb2 分区。sdb2 应具有适当的类型和大小。

 ddrescue -f -n /dev/sda2 /dev/sdb2 mapfile
 ddrescue -d -f -r3 /dev/sda2 /dev/sdb2 mapfile
 e2fsck -v -f /dev/sdb2
 mount -t ext2 -o ro /dev/sdb2 /mnt
   (read rescued files from /mnt)

示例 3:将整个驱动器 /dev/sda 救援到 /dev/sdb 时,/dev/sda 在位置 12345678 处冻结。

 ddrescue -f /dev/sda /dev/sdb mapfile       <-- /dev/sda freezes here
   (restart /dev/sda or reboot computer)
   (restart copy at a safe distance from the troubled sector)
 ddrescue -f -i 12350000 /dev/sda /dev/sdb mapfile
   (then copy backwards down to the troubled sector)
 ddrescue -f -R /dev/sda /dev/sdb mapfile

...


  1. 请勿使用该驱动器(超过克隆所需的量)。

  2. 从另一个驱动器启动,例如外部驱动器,通常是 USB 闪存盘(由 mkusb 制作的持久实时驱动器是一个很好的选择,而且许多 Linux 修复工具都可以达到这个目的,实际上 Ubuntu 持久实时驱动器也可以做到这一点,但是如果你安装了ddrescue,它将无法在重启后继续存在)。

  3. 准备好第三个驱动器作为克隆的目标驱动器。此驱动器必须至少与原始故障源驱动器一样大(不能小一个字节),并且应具有相同大小的物理簇。使用 进行检查parted

    sudo parted /dev/sdx u b p
    

    驱动器号在哪里x,例如ab,因此在此示例中

    sudo parted /dev/sda u b p
    
    sudo parted /dev/sdb u b p
    
  4. 将其写入持久位置很重要mapfile,因为您希望从第一步到下一步重复使用它。

  5. 如果包含克隆副本的目标驱动器与源驱动器(发生故障的驱动器)的大小不同,并且存在 GUID 分区表 GPT,则必须使用gdisk或更轻松地修复备份分区表gpt 修复. 如果有 MSDOS 分区表则不需要。

另请参阅以下链接,

修复 U 盘的分区表和文件系统- 向下滚动至

分区表、文件系统的高级修复和/或文件的恢复

如果仍有问题,您可以使用其他方法修复或恢复文件,这些方法更强大,但风险也更大。如果数据很有价值,最好将副本克隆到至少相同大小的卡或 U 盘上,然后尝试修复文件系统和/或从克隆副本中恢复文件。

特别是如果您怀疑有坏扇区(驱动器上的硬件损坏),使用 ddrescue 进行克隆是一个好主意。

相关内容