我正在将较大的 HDD(750GB)克隆到较小的 SSD(250GB)。我缩小了分区,只有 83gb 的已用空间。(我进行了碎片整理并进行了 chkdsk)。此外,分区大小的总和小于 SSD 大小。
我现在通过 pv 管道 dd 进程以查看传输的数据量。它仍在运行,并且已经在 170gb+ 上。为什么是这样?我在 dd 上使用了“conv=sync,noerror”参数。我以为它会以83gb结束..
这是“fdisk -l”输出:(/dev/sda = 750gb HDD,/dev/sdb = 250gb SSD)
Disk /dev/sda: 750.2 GB, 750156374016 bytes
255 heads, 63 sectors/track, 91201 cylinders, total 1465149168 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
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sda1 1 1465149167 732574583+ ee GPT
Partition 1 does not start on physical sector boundary.
WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.
Disk /dev/sdb: 240.1 GB, 240057409536 bytes
255 heads, 63 sectors/track, 29185 cylinders, total 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
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdb1 1 1465149167 732574583+ ee GPT
这是我用来克隆的命令:
sudo dd if=/dev/sda | pv | sudo dd of=/dev/sdb bs=64K conv=sync,noerror
那是因为您不只是复制 83GB 的数据。让我们看看你是如何复制数据的:
第一部分是读取整个/dev/sda 并将其转储到 STDOUT。
pv
从第一个开始测量转储的吞吐量和状态,dd
并将其重定向到下一个命令,同时向您的终端提供人类可读的输出。无论如何,它不会处理数据,它只是为了提供信息而测量事物。第三部分是从 STDIN 获取所有输入并将其转储到 /dev/sdb。
所以会发生什么,它将数据从源设备(/dev/sda)复制到目标设备(/dev/sdb),直到目标空间用完。
因为您调整了分区的大小,分区图可能适合目标设备,但这并不一定保证所有数据都将位于磁盘的开头。您需要查看 GPT 布局以确认分区已移动到驱动器的开头。如果不是,则副本可能不会包含您的所有数据。
您似乎正在尝试复制 Windows 系统的启动盘。与其尝试手动执行此操作,不如使用 Clonezilla 之类的实用程序为您执行此操作。您仍然需要缩小源磁盘上的文件系统,但它会为您在目标磁盘上创建分区并复制数据。