Windows 7 上使用 dd 进行 GPT 分区 SSD 备份

Windows 7 上使用 dd 进行 GPT 分区 SSD 备份

我有一个 SSD 设备作为主 SATA 硬盘,其中包含我的操作系统。在此设备上,我安装了 Windows 和 Linux Mint。现在我想制作我的 Windows 安装的映像,以便在出现故障时可以恢复该映像。硬盘使用 GPT 分区方案,并且存在以下分区(在 sda 上):

  1. EFI 分区
  2. Windows 7 (ms-tree) 不知道这是哪里的
  3. Windows 7 (ntfs) 系统驱动器 c:
  4. Linux Mint 的 \boot(ext2)
  5. \ (ext4) Linux Mint 的系统分区

首先,我很高兴知道哪些分区是我必须备份以恢复正在运行的 Windows 的最小分区。它只是带有 ntfs 文件系统的分区号 3 吗,还是我还需要包含 ms-tree 分区?当我没有 EFI 分区的备份时,我能否创建一个新的分区并使用 bcedit 从 Windows 7 的安装磁盘重新安装 Windows 启动管理器?

我的第二个问题是,当我备份所需的分区时,比如说

dd if=/dev/sda1 conv=sync,noerror bs=64K | gzip > ~/image-compress_sda1.img.gz

现在我的硬盘崩溃了,我想在一个新的硬盘上恢复,我创建了一个 gpt 分区表和一个类似 /dev/sdb2 的分区,我可以使用恢复我的 windows 吗

gzip -dc ~/image-compress_sda1.img.gz | sudo dd of=/dev/sda1 bs=64K

或者这会导致 GPT 分区表出现问题?有没有办法重新创建与我的旧磁盘相同的分区方案,除了 4 和 5 个分区是 Linux 专用的?当分区太小时会发生什么?dd 会崩溃吗?

我的最后一个问题是,我可以在 Linux 中轻松挂载 ntfs 分区的 img.gz 文件吗?

答案1

EFI 系统分区 (ESP;您的第一个分区) 保存 EFI 引导加载程序,因此您必须备份它。如果您不这样做,则在恢复 OS 分区时将无法启动。文件级备份(使用tarcp或类似的)足以完成此操作,事实上,这可能比dd备份更有效。文件级备份还可以更轻松地恢复到与原始大小不同的 ESP——dd在恢复到比原始设备更小的设备时会创建不完整的文件系统,因此永远不应在这种情况下使用。另一方面,备份dd将保留文件系统的序列号,Linux 通常在中使用/etc/fstab。如果您进行文件级备份,则需要/etc/fstab在创建新文件系统和恢复文件时进行调整。

我以前从未听说过“ms-tree”作为分区或文件系统类型。不过,在标准的 Windows EFI 安装中,有一个Microsoft 保留分区,它基本上只是空白空间,Windows 分区软件可以在将来的操作中将其用作“临时空间”。据我所知,它不包含任何长期数据,因此可以从备份中省略;但是,如果您想更加安全,可以对其进行备份dd

您的第三个分区(您的 WindowsC:驱动器)显然至关重要。我建议使用 Windows 备份工具来处理它或ntfsclone在 Linux 中使用它。我不记得在使用时是否可以恢复到比原始分区更小的分区ntfsclone,但我很确定可以恢复到更大的分区。文档ntfsclone说恢复的分区将无法启动,但这仅适用于基于 BIOS 的计算机;在 EFI 系统上,ntfsclone创建的映像应该可以正常启动,前提是 ESP 上的引导加载程序已正确恢复。(不过,分区表可能存在问题;我从未测试过恢复到新磁盘。)如果您使用该选项备份 Windows,请查看 Windows 软件的文档。

广义上讲,恢复到分区不会导致分区表问题 - 也就是说,如果您恢复到/dev/sda1(或其他),分区表不会受到影响。分区表存储在任何给定分区之外,因此要损坏分区表,您需要滥用分区软件(gdisk、、partedGParted 等)或写入全磁盘设备( )。不过,正如刚才提到的,软件可能会通过分区表中存储的 GUID 值来引用分区。您可以使用或 来/dev/sda识别和更改分区的 GUID 值,如下所示:gdisksgdisk

sudo sgdisk -i 1 /dev/sda
Partition GUID code: C12A7328-F81F-11D2-BA4B-00A0C93EC93B (EFI System)
Partition unique GUID: 2C47C282-EE6E-45DE-A5AD-E8658CA67DE6
First sector: 2048 (at 1024.0 KiB)
Last sector: 390625 (at 190.7 MiB)
Partition size: 388578 sectors (189.7 MiB)
Attribute flags: 1000000000000000
Partition name: 'EFI System'

此示例显示该分区是 ESP(在线Partition GUID code),并且其 GUID 值为 2C47C282-EE6E-45DE-A5AD-E8658CA67DE6(在线Partition unique GUID)。如果您需要将此数据复制到另一个磁盘,则可以使用选项-usgdisk如下所示:

sudo sgdisk -u 1:2C47C282-EE6E-45DE-A5AD-E8658CA67DE6 /dev/sda

这将分区 1 的唯一 GUID 设置为 2C47C282-EE6E-45DE-A5AD-E8658CA67DE6。还有其他方法可以做到这一点;有关详细信息,请参阅gdisksgdisk手册页。我想强调的是,这可能不是必要的。此外,不必要地复制 GUID 可能会导致问题,特别是如果原始磁盘和新磁盘将在同一台计算机中使用。这是因为这些值应该是独特的,因此,如果两个分区具有相同的 GUID,则某些软件的假设可能会被违反。您想要这样做的主要原因是,如果引导加载程序或其他工具通过其 GUID 值(在某些 Linux 工具中也称为 PARTUUID)引用分区。在这种情况下,复制 GUID 值将使软件无需重新配置即可工作 - 但调整软件的配置也会起作用。问题在于如何重新配置​​软件取决于软件。

相关内容