如何将单个分区移动到另一个空驱动器?

如何将单个分区移动到另一个空驱动器?

我在驱动器 A 上有一个分区 P1(其中包含我的 Linux 操作系统)。

我刚刚获得了一个全新的驱动器 B(比分区 P1 和整个驱动器 A 都大)。

我想将分区从驱动器 A 复制到驱动器 B,并可能稍后调整其大小。

这可以用 来完成吗dd?我可以轻松地在驱动器 B 上创建一个新的分区表,并且只cp创建文件 - 但这似乎由于文件系统开销而可能会稍微慢一些。


Output of `parted --list`:

我想要将分区 4 复制到另一个驱动器。

Model: ATA Samsung SSD 850 (scsi)
Disk /dev/sdb: 250GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name                  Flags
 1      17.4kB  1049kB  1031kB               BIOS boot partition   bios_grub
 2      1049kB  1074MB  1073MB  fat32        EFI System            boot, esp
 3      1075MB  183GB   181GB   ext4         Linux filesystem
 4      183GB   250GB   67.5GB  ext4         Basic data partition

请忽略任何对启动驱动器/功能的引用(我稍后会担心) - 让这个问题保持简洁。

答案1

是的,这就是dd目的。假设:

  • sxb是要复制的驱动器
  • sxc是要复制到的驱动器
  • sxb4是您要从中复制的第二个驱动器上的第四个分区
  • sxc1是您创建的大小相同的分区sxb4

做 :

    parted /dev/sxc
    GNU Parted 3.2
    Using /dev/sxc
    Welcome to GNU Parted! Type 'help' to view a list of commands.
    (parted) mklabel GPT
    Warning: The existing disk label on /dev/sxc will be destroyed and all data on this disk will be lost. Do you want to continue?
    Yes/No? Yes
    (parted) mkpart primary 0.0 67.5GB
    (parted) quit

    dd if=/dev/sxb4 of=/dev/sxc1 bs=16M

由于这会复制分区的 UUID,因此为了更改新分区的 UUID(确保该分区未安装),请运行以下命令:

e2fsck -f /dev/sxc1
tune2fs /dev/sxc1 -U random

如果sxb是旧驱动器并且您希望它有读取错误,请改用ddrescue

笔记:正如dd所谓的disk destroyer 一样,创建分区表是危险的,不要在上面输入确切的命令,因为互联网上的一些随机白痴可能会看到这个问题并复制粘贴代码不明白它的作用是什么……

答案2

GParted 可以创建和操作分区。如果您使用的是 Linux 操作系统,那么您还可以使用 GParted 完全在图形用户界面中实现此目标。就我而言,一个驱动器上有几个分区,我想将其中一些分区备份到另一个驱动器。

我将驱动器 1 和驱动器 2 连接到运行 Linux 操作系统的 PC。驱动器 2 的整个磁盘上只有一个大分区。我使用 Gparted 调整了该分区的大小以释放空间,足以容纳我想要备份的驱动器 1 中的所有分区。然后我从现在未分配的空间创建了一个“扩展”分区。

然后使用 GParted,我选择了驱动器 1,然后单击要复制的分区...“分区菜单”>“复制”,然后切换到驱动器 2,然后突出显示扩展分区,然后单击“分区菜单”>“粘贴”。我对所有想要备份到驱动器 2 上的“扩展分区”的分区重复了此操作。

相关内容