如何使用转储和恢复来“克隆”Linux 操作系统驱动器

如何使用转储和恢复来“克隆”Linux 操作系统驱动器

我在 500 GB 的机械驱动器上安装了 Ubuntu 18.04.3。我添加了一个 SSD。我在 SSD 上安装了 Ubuntu 18.04.3。SSD 是 sda,机械磁盘是 sdb。两个磁盘的扇区数相同。

我对安装在机械盘上的系统进行了一年多的改动。

我想复制sdbsda。可以吗?如果我启动sdb,会sudo dd if=/dev/sdb of=/dev/sda bs=2G起作用吗?

有没有更简单的方法来重复安装?我主要希望 apt 和 python 包相同。

sudo fdisk -l /dev/sd[ab]
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 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
Disklabel type: dos
Disk identifier: 0x87f0c3fe
Device     Boot     Start       End   Sectors   Size Id Type
/dev/sda1          409600   2506751   2097152     1G 83 Linux
/dev/sda2  *      2506752 212221951 209715200   100G 83 Linux
/dev/sda3       212221952 279330815  67108864    32G 82 Linux swap / Solaris
/dev/sda4       279330816 976773119 697442304 332.6G 83 Linux

Disk /dev/sdb: 465.8 GiB, 500107862016 bytes, 976773168 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: 0x49598911
Device     Boot     Start       End   Sectors   Size Id Type
/dev/sdb1            2048    976656    974609 475.9M  b W95 FAT32
/dev/sdb2  *       976896 352538623 351561728 167.7G 83 Linux
/dev/sdb3       352538624 391600127  39061504  18.6G 82 Linux swap / Solaris
/dev/sdb4       391600128 976771071 585170944   279G 83 Linux

答案1

答案是这个 Stack Overflow 问题经过星光熠熠的系统管理员

如何使用转储和恢复来“克隆”Linux 操作系统驱动器

您可以在网上找到大量有关使用dd克隆操作系统驱动器的信息。

别听!这样使用起来要快得多dumprestore因为你只复制数据,而不是复制所有块(无论是否为空)。

第 1 部分:了解源驱动器和目标驱动器在设备列表中的位置

lsscsi | grep sd*

将显示 scsi 设备及其相关字母的列表。如果您很幸运地使用热插拔盒,那么您只需在插入驱动器之前和之后运行该命令即可——显示的最新设备当然是您刚刚插入的驱动器。

第 2 部分:准备转储

  1. 安全提示:为目标设备和源设备分配变量。(此外,如果您多次执行此操作,变量化允许您重复使用这些命令。)

    SOURCE=/dev/sdx DEST=/dev/sdy
    
  2. 注意源驱动器(您要从中复制的驱动器)。如果您要复制当前操作系统驱动器,它将(呃)已被安装。如果您要复制其他驱动器,则实际上不需要安装它。

  3. 将源驱动器的分区表复制到文件中:

    sfdisk -d $SOURCE > part_table
    
  4. 复制已存储在文件中的 part_table

    sfdisk --force $DEST < part_table
    
  5. 将引导扇区清零:

    dd if=/dev/zero of=${DEST}1 bs=512 count=1
    
  6. 创建文件系统(一次一个分区):

    mkfs -t ext4 ${DEST}1
    mkswap ${DEST}2
    
  7. 看一看:

    parted $DEST --script print
    
  8. 复制所有非交换分区的标签。例如:

    tune2fs -L "/" /${DEST}1
    

第 3 部分:转储 | 恢复时刻

  1. 创建一个目录来挂载转储 | 恢复的目标设备。(如上所述,无需挂载源设备。)

    mkdir -p /mnt/${DEST}1
    
  2. 挂载目标设备:

    mount -t ext4 ${DEST}1 /mnt/${DEST}1
    
  3. cd进入挂载点:

    cd /mnt/${DEST}1
    
  4. 转储和恢复:

    dump -a0f - /dev/${SOURCE}1 | restore -rf -
    

    转储标志: a=自动大小;0(零)=从块 0 开始;f=文件,-=标准输出;恢复标志: r=重建;f=文件;-=标准输出)

  5. dump | restore只需几分钟。

第 4 部分:使用 grub 在克隆的驱动器上安装引导加载程序

  1. 假设您正在复制 OS 驱动器(即,启动盒子的驱动器),则需要安装引导加载程序。

  2. Grub 将磁盘标识为 hd#,从 0(不是 1)开始。对应关系很简单:/dev/sda= hd0/dev/sdb=hd1等。

     [root@drive-toaster /]# grub
    
     grub> root (hd1,0)  # use correct number for your disk!  
     root (hd1,0)   
     Filesystem type is ext2fs, partition type 0x83
    
     grub> setup (hd1) # use correct number for your disk!  
     setup (hd1)   
     Checking if "/boot/grub/stage1" exists... yes
     Checking if "/boot/grub/stage2" exists... yes
     Checking if "/boot/grub/e2fs_stage1_5" exists... yes
     Running "embed /boot/grub/e2fs_stage1_5 (hd1)"...  27 sectors are embedded.
     succeeded
     Running "install /boot/grub/stage1 (hd1) (hd1)1+27 p
     (hd1,0)/boot/grub/stage2 /boot/grub/grub.conf"... succeeded
     Done.
    
     grub> quit
    

相关内容