备份旧的、故障的驱动器最安全的方法是什么?

备份旧的、故障的驱动器最安全的方法是什么?

我有一些旧硬盘(一些是 IDE,大多数是 SATA)。几年前,我启动它们并尝试通过恢复删除程序恢复所有文件,并恢复了一些文件。我不相信我做得好,所以现在我想再试一次。

我认为逐扇区方法最好,因为这样可以捕获每一点数据,然后我可以随意尝试恢复图像中可能残留的任何文件。我知道尝试自己恢复会降低专业恢复成功的机会,但我真的只希望恢复一些我小时候依稀记得的文件,所以这并不那么重要。

考虑到可能存在许多故障扇区,对我的旧驱动器创建某种逐扇区映像的最安全方法是什么?

我熟悉 Linux,并且我的笔记本电脑上有 Mint 双启动,但我从未使用过 DD,而且我不确定我是否应该学习使用它或寻找其他工具。

答案1

一般来说至少有两种策略:

  1. 使用专门处理读取错误的工具复制整个磁盘。标准工具是 GNUddrescue,我已多次使用它来对块设备进行映像处理。

    GNUddrescue不关心分区表或文件系统,它的工作是尽可能多地读取驱动器,同时在出现读取错误时首先尝试挽救好的部分。

    (我听说过硬盘超级克隆,但我(目前)还没有用过它。)

    在最好的情况下,您将获得驱动器的完美映像,包括任何先前删除的文件系统或文件的残留;因此,任何试图取消删除或恢复此类文件的尝试都将以与使用原始驱动器相同或更高的程度进行。可能“更高程度”是因为假设原始驱动器在压力下可能会发生故障,但一旦创建副本/映像并正确存储在健康的驱动器上,它就是牢固的,可以使用而不会冒任何风险。

    在最坏的情况下,创建完整映像的唯一尝试将导致源驱动器损坏。为了降低这种风险,还有另一种策略。

  2. 使用能够理解所需文件系统的工具复制所需文件系统,并故意跳过文件系统未使用的驱动器部分。这样做的目的是,尝试读取文件系统当前未使用的扇区是没有意义的,因为即使成功读取也不会给您带来任何结果,同时仍然可能在整个操作完成之前损坏磁盘。

    为了实现这一点,文件系统的基本结构必须完整。您需要一个特定于文件系统类型的工具。对于 NTFS,请参阅此问题:如何才能找出 NTFS 上的文件使用了哪些扇区?

    此策略会故意跳过文件系统当前未使用的扇区。一般来说,您可能恢复的大部分数据都存在于此类扇区中,这些数据将丢失。此策略旨在最大限度地提高复制文件系统当前状态的机会,仅此而已。

您提到尝试“通过恢复删除程序恢复所有文件”。您想再试一次。如果是这样,那么第一个策略适合您。

笔记:

  • 使用第一种策略,您可以复制整个块设备(例如/dev/sdc在 Linux 中)。我假设有一个分区表。如果分区表完好无损,则复制到另一个块设备(例如/dev/sde)将在那里“创建”分区(内核将/dev/sde1在之后为您提供等partprobe),并且使用它们将非常简单。将整个分区块设备复制到常规文件稍后会有些问题,因为您需要知道如何访问常规文件中存在的“分区”(如果您想这样做,在 Linux 中,工具是、、losetup --partscan)。因此,如果您想复制到常规文件,通常最好将每个分区复制到单独的文件。partxkpartx

    使用第二种策略,你可以复制一个文件系统,几乎总是存在于分区内(例如/dev/sdc1在 Linux 中)。

  • 我个人更喜欢复制到 Btrfs 上的常规文件。首先,我使副本不可变(chattr +i)以防万一。接下来,我创建副本的重新链接副本(cp --reflink=always)。然后我使用这个“辅助”副本,这样即使需要修改映像的工具也可以工作,但我仍然有不可变的副本可以重新开始,以防出现任何问题。这种谨慎是可能的,无需重新链接,通过实际复制,因此在任何文件系统中都是如此;不过,重新链接大大节省了时间和磁盘空间。

  • 不过,Windows 和 Windows 中的(恢复)工具可能要求副本存在于块设备上。我对 Windows 了解不够多,不知道它如今可以多么轻松地将常规文件伪装成块设备(就像 Linux 可以做到的那样losetup)。在某些操作系统(例如 Windows)中使用常规文件中的磁盘副本的一种通用方法是将副本作为“HDD”连接到运行操作系统的虚拟机。

  • 如果克隆驱动器上有 Btrfs,则不要在原始驱动器仍处于连接状态时尝试安装副本(反之亦然)。原因是它们将共享标识文件系统的 UUID,并且根据设计,它们将被解释为单个文件系统的一部分,而不是两个不同的文件系统。请参阅如何复制 btrfs 文件系统一些有用的想法。

相关内容