dd 空间不足

dd 空间不足

我有一个大约 1TB 大的驱动器。它主要是自由空间。将所有分区的大小加起来,不到 256GB。

我还有另一个 256GB 的驱动器。

我想将数据从 1TB 驱动器克隆到 256GB 驱动器。

这可能吗?显然源大于目标,但我想知道,因为 1TB 驱动器大部分是可用空间,而分区总数小于 256GB。

现在,我刚刚收到驱动器空间不足的错误。

我尝试过使用“conv=sparse”以及多个“bs”大小,包括小至 512。

来源:

Disk /dev/nvme0n1: 953,87 GiB, 1024209543168 bytes, 2000409264 sectors
Disk model: SAMSUNG MZVL21T0HCLR-00BL2              
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: gpt
Disk identifier: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

Device              Start        End   Sectors   Size Type
/dev/nvme0n1p1       2048     206847    204800   100M EFI System
/dev/nvme0n1p2     206848     239615     32768    16M Microsoft reserved
/dev/nvme0n1p3     239616  411406335 411166720 196,1G Microsoft basic data
/dev/nvme0n1p4 1999026176 2000406527   1380352   674M Windows recovery environment
/dev/nvme0n1p5 1997025280 1999026175   2000896   977M Linux swap

Partition table entries are not in disk order.

目的地:

Disk /dev/sdd: 238,5 GiB, 256087425024 bytes, 500170752 sectors
Disk model: Extreme Pro     
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

使用的命令:

(注:我尝试了很多不同的参数组)

sudo dd status=progress bs=512 if=/dev/nvme0n1 of=/dev/sdd

答案1

感谢您添加详细信息。

  • 当您安装了 Windows 后,请确保您拥有最新的 Windows 恢复介质。此 USB 记忆棒可以由您的 Windows 创建。在 Windows 开始菜单中搜索恢复媒体或直接运行

    C:\Windows\System32\RecoveryDrive.exe
    

    如果您的 Windows 在磁盘更改后不再启动,这将有所帮助。

  • 您有一个 Linux SWAP 分区。里面没有有价值的数据。因此,这 1 GB 可以稍后在新媒体上释放并重新创建。


您正在将整个 SSD (1TB) 复制到较小的 SSD。由于分区的总大小小于目标 SSD,因此所包含的数据量将适合。

问题是最后一个分区。它们位于末尾,而其他分区位于开头,后面有一个巨大的间隙。

我建议

  1. 首先将隔板从一端移至与其他隔板紧贴的位置。然后所有分区都低于 250 GB,整个结构将适合新磁盘的空间。

  2. 将所有分区移动到磁盘的开头后,您可以执行您的dd.您可能希望将块计数限制为目标磁盘的大小以禁止出现错误消息。

    dd bs=512 count=500170752 if=/dev/nvme0n1 of=/dev/sdd status=progress
    

    更快的方法是将计数限制在最后一个分区的后面。但由于您可能想要调整大小/删除某些分区,我无法计算它。

  3. 磁盘末尾的备份 GPT 表仍然缺失。分区编辑器会发出类似的错误
    The backup GPT table is corrupt, but the primary appears OK, so that will be used.

    通过以下方式创建备份 GPT 表

    sudo sgdisk -e /dev/sdd
    

    或者只是打开任何分区编辑器并保存分区表。

  4. 现在您可以将恢复分区移回磁盘的末尾,就完成了。

如果您不确定如何移动分区,请查看这个答案来自 SuperUser.com。我认为gparted这是安全管理它的便捷方法。


(感谢@TomYan 提供有关 GPT 备份表的提示)

相关内容