请注意,存在一个问题,我需要一个既由命令行驱动又使用 efi(uefi??)的解决方案来使我的系统正常工作。
我看到这个问题出现过很多次,但是所有的答案都是不完整的,忽略了诸如磁盘是否已安装之类的细节,也没有对如何对 ubuntu 安装进行实际备份和恢复进行完整的研究,所以如果我们可以探索这个例子,我认为它涉及到人们希望看到的与备份系统有关的所有问题。
问题:如何备份整个可启动磁盘,保留所有 3 个分区,但利用大分区大部分为空的事实来制作一个小文件/图像?
条件:我目前从 sdb 启动,这是一个有 3 个分区的 1TB 磁盘。我已经使用 dd 命令将磁盘克隆到 sda。
分区 1 和 2 很小,但似乎对于使磁盘可启动是必要的,并且在压缩方面存在小问题,但并不是说压缩它们不值得。分区 3 是 950gb,但其中 98% 是空的。换句话说,它是分区 1 和 2 未占用的磁盘驱动器的剩余部分。Sdc
是一个空的 240gb 磁盘驱动器,有一个分区 sdc1
目标:我希望能够制作某种类型的后备 zip 文件或图像文件或任何我可以用于备份当前未安装的 sda 磁盘并维护 3 个分区的文件,但同时能够至少压缩大分区以便备份映像的大小要小得多并且可以存储在 sdb 或 sdc 上。
然后,我应该能够使用该压缩备份在新的 1TB 磁盘上创建新的可启动磁盘,该磁盘将重新创建三个分区,以便精确地重新创建分区 1 和 2,并且分区 3 使用磁盘的其余部分。我也需要有关如何执行此操作的说明。
想法:我认为这其中最难的部分是确定第三个分区的大小,作为一个可接受的解决方案,因为我知道 950gb 分区有 98% 是空的,也就是说我只使用了 950gb 中的 20gb,我将源磁盘上的第三个分区剪切为 25gb(只是为了确保安全),然后只备份这三个分区,进行备份,然后将源磁盘上的第三个分区扩展回 950gb,当我去恢复此映像时(最坏情况是 1G+5G+25G== 31gb),我有一个可装入 31gb 磁盘的可启动磁盘。就我而言,我可以扩展这台 240gb 机器上新恢复的磁盘上的第三个分区,以充分利用 240gb。?
提前致谢
jleslie48
Bootdisk-rack3:~$ df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 16374812 0 16374812 0% /dev
tmpfs 3281996 9328 3272668 1% /run
/dev/sdb3 978410716 15753812 912933464 2% /
tmpfs 16409968 56 16409912 1% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 16409968 0 16409968 0% /sys/fs/cgroup
/dev/sdb1 815104 29096 786008 4% /boot/efi
tmpfs 3281996 0 3281996 0% /run/user/1001
Bootdisk-rack3:~$ sudo fdisk -l
[sudo] password for bootdisk-01:
Disk /dev/sda: 953.9 GiB, 1024209543168 bytes, 2000409264 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: D02C689D-715F-4380-B810-D0624582A381
Device Start End Sectors Size Type
/dev/sda1 2048 1640447 1638400 800M EFI System
/dev/sda2 1640448 12126207 10485760 5G Microsoft reserved
/dev/sda3 12126208 2000408575 1988282368 948.1G Linux filesystem
Disk /dev/sdb: 953.9 GiB, 1024209543168 bytes, 2000409264 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: F92B5F4A-7AF6-43E2-9E77-E04D4FF4395D
Device Start End Sectors Size Type
/dev/sdb1 2048 1640447 1638400 800M EFI System
/dev/sdb2 1640448 12126207 10485760 5G Microsoft reserved
/dev/sdb3 12126208 2000408575 1988282368 948.1G Linux filesystem
Disk /dev/sdc: 223.6 GiB, 240057409536 bytes, 468862128 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x85a40f8e
Device Boot Start End Sectors Size Id Type
/dev/sdc1 * 2048 468858879 468856832 223.6G 7 HPFS/NTFS/exFAT
Bootdisk-rack3:~$~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 953.9G 0 disk
--sdb2 8:18 0 5G 0 part
--sdb3 8:19 0 948.1G 0 part /
--sdb1 8:17 0 800M 0 part /boot/efi
sdc 8:32 0 223.6G 0 disk
--sdc1 8:33 0 223.6G 0 part
sda 8:0 0 953.9G 0 disk
--sda2 8:2 0 5G 0 part
--sda3 8:3 0 948.1G 0 part
--sda1 8:1 0 800M 0 part
答案1
您把它弄得太复杂了,您存储的是信息,而不是分区。只需将信息(文件)存储在 .zip、.tar 等任何您想要的文件中,使用所需的压缩级别。然后,当需要进行恢复时,该文件将被提取到新分区,信息将返回到需要的位置。然后,当然,需要进行编辑以使其再次启动,以反映新的分区布局,并将它们用于启动。获得这些后,下一步是UUIDs
重新安装。GRUB
现在我想起来,这个程序是我自己做的,除了引导修复我自己复制GRUB
到文件夹中EFI
。它很简单,可以根据您的需要进行调整。
答案2
虽然 HappyTux 提供了很好的答案,但您可能想尝试以下步骤。
- 使用 parted 实用程序,特别是 resizepart 将 sda 上的分区 3 的大小减小到更易于管理的大小。这里有关于如何执行此操作的信息。https://www.tecmint.com/parted-command-to-create-resize-rescue-linux-disk-partitions/
- 使用 dd 将 sda 复制到 240GB 磁盘,但指定目标为文件,而不是整个磁盘。
- 一旦 240GB 磁盘上有了文件,您就可以根据需要对其进行压缩。
- 修复过程与上述操作相反
在执行此操作时,您需要思考一个问题。为什么要保留标记为 Microsoft 保留的 5GB 分区?这对于启动 Linux 系统不是必需的,但需要 800MB 的小 EFI 分区