我可以将较大的驱动器添加到较小的驱动器中吗?

Cha*_*ang 8 dd

我已经使用 GParted 调整了较大驱动器的分区大小。

我可不可以做

sudo dd if=/dev/LargerDrive of=/dev/SmallDrive
Run Code Online (Sandbox Code Playgroud)

?

SDs*_*lar 7

是的,只要分区适合,就不需要通过 dd 调整大小。
即驱动器的大小不是问题。

(请注意,以下所有操作都应通过启动原始安装 DVD 并使用 LiveCD 选项来完成,这样就不会安装有问题的驱动器。)

这是一个过于简化的答案,我要么从未使用 gparted 来调整分区大小,要么我使用了但现在又做了一次以将其缩小到大小。

例如,如果您使用 160 GB 驱动器 (/dev/sda) 并将其复制到 750 GB 驱动器 (/dev/sdb) - 我这样做是为了在 7200 rpm 驱动器上更快地启动。您可能只是为了备份而这样做。

/dev/sda(160GB 启动驱动器)插入 SATA 端口 0

/dev/sdc DVD 驱动器位于 SATA 端口 1

/dev/sdb(750 GB 驱动器)插入 SATA 端口 2

从收集信息开始

sudo fdisk -l
Run Code Online (Sandbox Code Playgroud)

/dev/sda 是带有分区的原始 160 GB 驱动器。

那么理想情况下,它将显示 /dev/sdb 没有分区表。

如果 /dev/sdb 显示分区,但您仍然想使用它,您可以使用以下命令擦除 MBR 和分区表:

sudo dd if=/dev/urandom of=/dev/sdb bs=512 count=24
Run Code Online (Sandbox Code Playgroud)

这将保证擦除 MBR 和分区表。
它看起来好像是一个新的空白驱动器。

继续将您的启动驱动器备份到更大的驱动器:

sudo dd if=/dev/sda of=/dev/sdb
Run Code Online (Sandbox Code Playgroud)

这将需要一些时间。我在您发布问题 3 年后写这篇文章,我的备份需要 8000 秒(约 2.5 小时)。

就我而言,然后我删除了原始启动驱动器并将其放在一边作为备份。这会导致我的系统从它找到的第一个硬盘驱动器启动,即 SATA 端口 2 上的 750。

但在您的情况下,您正在移除 750 并将其放在一边作为备份,从而为专门回答您的问题做好准备。

然后稍后 - 以及更多关于您问题的要点:

假设您的启动驱动器出现故障,或者您决定像我刚才那样用 160 GB SSD 驱动器替换它。我没有使用更多的 750 GB 驱动器。它仍然只包含之前的原始 160 GB 分区

新的 SSD 也是 160 GB(在 eBay 上为 50 美元),因此它足以容纳分区。

原来的/dev/sdb还是和以前一样插在主板的SATA插座上,所以现在我把SSD插到SATA端口0,SSD现在是/dev/sda

(/dev/sdc 是我正在启动的 LiveCD)

打开一个终端窗口并检查一下:

sudo fdisk -l
Run Code Online (Sandbox Code Playgroud)

验证 160 GB (/dev/sda) 是否没有分区表。如果是,您可以使用以下命令擦除 MBR 和分区表:

sudo dd if=/dev/urandom of=/dev/sdb bs=512 count=24
Run Code Online (Sandbox Code Playgroud)

然后继续 dd:

dd if=/dev/sdb of=/dev/sda
Run Code Online (Sandbox Code Playgroud)

(这将需要与以前相同的时间 - 几个小时)

确保彻底关闭 liveCD。

sudo init 0
Run Code Online (Sandbox Code Playgroud)

它将弹出 CD,然后提示您按 Enter 键,以便刷新剩余的缓冲区。

删除 /dev/sdb 的 750。

瞧,它现在可以很好地启动到较小的驱动器上,因为分区的大小允许它适合。


如果您像我刚才那样使用 SSD 执行此操作,请在启动前系好安全带。它是如此之快,在它询问您的密码之前,您甚至无法从咖啡杯中获得完整的抽奖。


在我的特殊情况下,我选择将 750 HDD 作为辅助驱动器,我通过 UUID 挂载在 /mnt 下的 fstab 中以进行备份和数据收集。


所以你有它。2017 年 7 月使用 Ubuntu 14.04 Install/LiveCD 的答案

  • 如果有 MSDOS 分区表,这将起作用。但是如果有 GUID 分区表 GPT 可能会有问题,因为(应该)有一个分区表的备份在驱动器的最末端,而对于较小的目标驱动器,这个备份分区表将简单地丢失。但不要绝望,它可以用`gdisk` 修复:-) 请参阅此链接,https://help.ubuntu.com/community/Installation/UEFI-and-BIOS/stable-alternative#gpt-fix (4认同)
  • 请运行以下命令行,以便在克隆后找出 SSD 中存在哪个分区表, `sudo parted -ls` "... space minus ell ess"。我很高兴得知您的克隆成功,并且我猜有一个 MSDOS 分区表。这并不意味着您正在使用旧的 MSDOS 操作系统,而只是使用旧式分区表,该分区表最初是为 MSDOS 开发的,以便在硬盘驱动器上创建分区。 (3认同)

rus*_*cur 1

是的,但是如果您只是复制分区,则需要指定分区。

因此,如果较大驱动器上的分区号为 1,则

sudo dd if=/dev/LargerDrive1 of=/dev/SmallDrive bs=4M
Run Code Online (Sandbox Code Playgroud)

如果您希望小驱动器写入或不写入现有分区,您可以为该小驱动器指定一个编号。

另外,考虑在命令中添加块大小,它可以加快速度。