我有一个 1 TB 内置驱动器,它有两个 1/2 TB 分区,一个用于 Windows,另一个用于 Ubuntu 14.04 LTS。该站主要变成了 Linux 站,我再也不会启动 Windows 了。
我想创建一个映像备份,因此我使用 DD 将内部驱动器克隆到外部 1 TB USB 驱动器。不幸的是,USB 驱动器似乎只比内部驱动器少几 GB,DD 以“驱动器空间不足”错误消息结束。现在我看到了一些奇怪的东西。当我弹出 USB 驱动器并将其重新插入时,我看到两个 1/2 GB 的分区似乎是重复的。它们具有相同的 GUID,Nautilus 显示相同的目录结构和内容。我猜想其中一个分区的不完整复制导致外部驱动器处于损坏状态。
我如何使用 DD只需克隆 Linux 分区到外部驱动器?这才是我真正想要的。
答案1
首先你需要找到有关硬盘的数据,你可以在终端中输入以下命令来执行此操作:
sudo fdisk -l
你应该得到如下输出:
Disk /dev/sda: 149,1 GiB, 160041885696 bytes, 312581808 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: 0x06bd4abe
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 230055935 230053888 109,7G 83 Linux
/dev/sda2 292970494 312580095 19609602 9,4G 5 Extended
/dev/sda3 230055936 292968447 62912512 30G 83 Linux
/dev/sda5 292970496 312580095 19609600 9,4G 82 Linux swap / Solaris
Partition table entries are not in disk order.
假设 /dev/sda3 是您想要克隆的驱动器,那么您可以执行以下操作:
dd bs=512 if=/dev/sda of=/dev/sdb1/partition.ddfile seek=230055936 count=$(expr 292968447 - 230055936)
提醒一下,这里只是一些例子,您需要根据自己的情况来选择。
答案2
更简单的方法:
sudo fdisk -l
就像 Videonath 所说的那样。找到您要克隆的分区dd bs=512 if=/dev/<partition-name> of=/<external-media-path>
例如dd bs=512 if=/dev/sda2 of=/dev/sdb1
笔记:
- dd 要求目标的大小大于或等于源的大小
- 以这种方式创建的备份(分区级别)将无法启动
答案3
当你问到 时dd
,我可以推荐一下吗partclone
?它用于克隆和恢复分区。它需要知道底层文件系统,其优势在于dd
它只复制用过的块并节省大量时间或空间,因为分区中未使用的部分很少是可压缩的(旧数据垃圾而不是零)。
sudo partclone.ext4 -c -b -s /dev/sdaX -o /dev/sdbY
将执行您想要的操作。-c
代表克隆,-b
代表设备到设备,-s
代表源,-o
代表目标。此外,由于您进行了克隆,因此源和目标的 UUID 是相同的。使用 检查这一点blkid
,使用uuidgen
生成新的 UUID,然后sudo tune2fs /dev/sdbY -U <uuidgen-generated new UUID>
更改它。
同一台机器上有两个相同的 UUID 甚至可能是导致外部设备“损坏”状态问题的根本原因。
在执行此操作之前,需要设置目标设备,fdisk
以便新分区不小于旧分区。如果新分区大于旧分区,则可以随后将克隆的分区扩展到gparted
新的最大大小。