我有一个 1TB FAILING 硬盘、一个全新的 1 TB 硬盘、一个可启动的 ubuntu USB 和一台可以工作的计算机。
我所需要的只是一个如何安全地将尽可能多的数据从一个克隆到另一个的逐步过程。注意:驱动器出现故障。
我知道我需要启用多重宇宙,然后安装和使用ddrescue才能完成任务。但是无论我在网上查看的任何地方,我都无法找到完成任务的直接途径。我知道这一切都可以在终端内完成,这就是我所寻求的。
我怎样才能做到这一点?
注意:强烈建议您从实时 USB 或类似设备运行,而不是在损坏的硬盘驱动器上运行。
ddrescue超过绝对必要的情况下使用损坏的硬盘可能会导致更多(甚至更糟!)的数据丢失。
首先,您将启用universe存储库:
sudo add-apt-repository universe
Run Code Online (Sandbox Code Playgroud)
在 Ubuntu 18.04(及更高版本,本指南假定)上,这也会自动更新您的软件包存储库。
启用后universe,我们可以继续安装ddrescue:
sudo apt install gddrescue
Run Code Online (Sandbox Code Playgroud)
接下来,找到您的分区/磁盘数据。这通常可以通过lsblk和blkid命令来实现。在我的(示例)系统上,我们将克隆/dev/sda到/dev/sdb. 一旦我们有了名字,我们就可以运行 ddrescue:
sudo ddrescue -d -r3 /dev/sda /dev/sdb /path/to/rescue.log
Run Code Online (Sandbox Code Playgroud)
我们将使用该-d选项直接读取磁盘,并-r3在继续之前重试坏块三次。rescue.log是一个(可选)日志文件,用于在恢复中断时重新启动恢复。您可以将其存储在内存中,但强烈建议将其存储到外部(第三个)USB 驱动器。
让其运行,希望您的驱动器能够恢复。
ddrescue有关更多选项,请在安装后阅读联机帮助页。您可以使用以下命令访问它:
man ddrescue
Run Code Online (Sandbox Code Playgroud)
完整的磁盘ddrescue是可行的,但由于会给磁盘带来不必要的压力,因此有些不受欢迎。如果可能的话,尝试仅恢复所需的最少量数据 - 例如单个分区。为此,您需要首先在目标驱动器上创建一个分区。
我建议您使用“ddrescue”,
sudo add-apt-repository universe
sudo apt update
sudo apt install gddrescue
Run Code Online (Sandbox Code Playgroud)
这是一个工具,可以分两步克隆,
安装的时候ddrescue,有一个很好的教程
info ddrescue
Run Code Online (Sandbox Code Playgroud)
请在开始工作前仔细阅读。您或许可以按照示例之一的说明进行操作。
示例 1:将 /dev/sda 中具有两个 ext2 分区的整个磁盘全自动救援到 /dev/sdb。注意:您不需要事先对 /dev/sdb 进行分区,但如果 /dev/sda 上的分区表损坏,您需要以某种方式在 /dev/sdb 上重新创建它。
Run Code Online (Sandbox Code Playgroud)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 应具有适当的类型和大小。
Run Code Online (Sandbox Code Playgroud)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 处冻结。
Run Code Online (Sandbox Code Playgroud)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...
不要使用该驱动器(超过克隆所需的驱动器)。
从另一个驱动器启动,例如外部驱动器,通常是 USB 随身碟(mkusb 制作的持久实时驱动器是一个很好的候选者,许多 Linux 修复工具都可以达到此目的,实际上 Ubuntu 仅实时驱动器可以做到这一点,但如果如果您安装了ddrescue,它将无法在重新启动后继续存在)。
准备好第三个驱动器作为克隆的目标驱动器。该驱动器必须至少与原始故障源驱动器一样大(不能小一个字节),并且应该具有相同大小的物理集群。检查一下parted,
sudo parted /dev/sdx u b p
Run Code Online (Sandbox Code Playgroud)
其中x是驱动器盘符,例如a和b,因此在此示例中
sudo parted /dev/sda u b p
sudo parted /dev/sdb u b p
Run Code Online (Sandbox Code Playgroud)将 写入持久位置非常重要mapfile,因为您希望从第一步到下一步重用它。
如果具有克隆副本的目标驱动器的大小与源驱动器(发生故障的驱动器)不同,并且存在 GUID 分区表 GPT,则必须使用 gpt-fix 修复备份分区表,或者使用gpt-fixgdisk更容易。如果有 MSDOS 分区表,则不需要这样做。
另请参阅以下链接,
修复随身碟的分区表和文件系统- 向下滚动到
高级修复分区表、文件系统和/或文件恢复
如果仍然存在问题,您可以使用其他方法来修复或恢复文件,这些方法更强大,但风险也更大。如果数据很有价值,最好将克隆副本复制到至少相同大小的卡或随身碟上,并尝试修复文件系统和/或从克隆副本恢复文件。
特别是如果您怀疑有坏扇区(驱动器上的硬件损坏),最好使用 ddrescue 进行克隆。
| 归档时间: |
|
| 查看次数: |
8858 次 |
| 最近记录: |