我想创建一个 Linux 安装的完整磁盘备份(包括 gpt、引导加载程序)。系统安装在 128GB SSD 上,但只有约 32GB 用于分区,其余为未分配空间。如何在不克隆整个未分配部分的情况下备份此系统?我尝试仅在驱动器的前约 32GB 上使用 dd,但随后注意到,这不会包括磁盘末尾的 GPT 备份。我主要关心的是备份的时间和磁盘空间。我可以将整个 dd 映像压缩到约 4GB,但这需要约 20 分钟,此外还需要约 15 分钟来复制整个驱动器。
答案1
因为您使用的是 GPT,所以引导加载程序位于 UEFI 固件和 EFI 分区中,并且没有 MBR。EFI 分区通常格式化为 FAT32 文件系统。
有多种备份类型,各有优缺点:
- 离线完整磁盘映像 - 您可以使用克隆为此。您需要使系统脱机并将磁盘连接到另一个系统或从 CD/网络启动。
- 所有分区的脱机分区映像 + GPT 分区表导出 - clonezilla 从 CD/NET 或连接到另一个正在运行的系统的磁盘运行。对于 GTP:
sgdisk --backup=gpt-sdX-$HOSTNAME-$(date +%F_%H%M%S).txt sdX
- 在线 LVM、ZFS、btrfs 快照和快照备份以获得一致的备份
- 在线应用程序备份 - 如果您有数据库和其他应用程序,它们可能具有快照和/或导出机制。
支持多种文件系统:(1) GNU/Linux 的 ext2、ext3、ext4、reiserfs、reiser4、xfs、jfs、btrfs、f2fs 和 nilfs2,(2) MS Windows 的 FAT12、FAT16、FAT32、NTFS,(3) Mac OS 的 HFS+,(4) FreeBSD、NetBSD 和 OpenBSD 的 UFS,(5) Minix 的 minix,以及 (6) VMWare ESX 的 VMFS3 和 VMFS5。因此,您可以克隆 GNU/Linux、MS windows、基于 Intel 的 Mac OS、FreeBSD、NetBSD、OpenBSD、Minix、VMWare ESX 和 Chrome OS/Chromium OS,无论它是 32 位 (x86) 还是 64 位 (x86-64) 操作系统。对于这些文件系统,Partclone 只会保存和恢复分区中使用的块。对于不支持的文件系统,扇区到扇区的复制由 Clonezilla 中的 dd 完成
答案2
您可以通过将 dd 指向 /dev 上的相应设备(比如说 /dev/sdb1)轻松克隆任何分区,或者通过将 dd 指向整个磁盘设备来克隆整个磁盘:
克隆分区:
dd if=/dev/sdb1 bs=4096 of=sdb1.img
克隆整个磁盘:
dd if=/dev/sdb bs=4096 of=sdb.img
现在的问题是,如果您想备份磁盘末尾的 GPT 备份(您可能不需要),您除了备份整个磁盘之外别无选择。
如果担心生成的文件的大小,您可以按照说的进行压缩,当然这会花费更长的时间。
Linux 已经采用了最初为 Solaris 编写的漏洞检测技术寻找洞文件查找操作中的选项,允许跳过零区,因此,如果您使用的是较新的内核,dd 应该能够跳过存储设备中的零。要做到这一点,dd 版本还必须适应这种新的空洞查找机制。