我想将 Linux 系统从一台计算机复制到我的计算机。该 Linux 系统使用两个分区。(“/” 和另一个)
我使用 clonezilla 复制了这两个分区并将它们放入映像中。但是当我克隆它们时,它们保留了分区名称,即 sda5 和 sda7。当我在计算机上使用 Gparted 时,我已经有一个 sda5 分区,因此如果我使用 clonezilla,它将删除该分区以复制另一个分区。
有什么办法可以避免这种情况吗?也许重命名 img 中的分区?
答案1
我建议在两台计算机上使用 dd,如下所示:
首先,通过在该分区中未占用的空间上写入零来清除旧数据和已删除的文件:
dd if=/dev/zero of=/mnt/original_partition/zerofile bs=16M conv=fdatasync
当分区上没有剩余空间时,此命令将停止。之后,删除零文件:
rm /mnt/original_partition/zerofile
现在,您在二进制级别上只有分区上的所需数据,因此压缩将更容易。现在,制作分区的二进制映像。使用 fdisk -l 查看分区标识符是什么(在此示例中,我们将其设为 /dev/sdb5),并在下一个命令中使用该标识符。请注意,在此示例中,我使用的是 pigz 而不是 gzip。Pigz 是 gzip 的并行实现,通过使用系统的所有核心来加快操作速度:
dd if=/dev/sdb5 bs=16M | pigz | dd of=/path/to/backup/storage/sdb5.img.gz bs=16M conv=fdatasync
现在您有了一个分区的压缩二进制映像。将其传输到另一台机器。现在您必须使用 fdisk 准备分区(fdisk 使用起来非常简单)。根据需要将分区设置得尽可能大,然后将更改写入磁盘。假设您刚刚创建了分区 /dev/sdb3。
现在,使用以下命令解压缩二进制映像并将其写入新分区:
dd if=/path/to/backup/storage/sdb5.img.gz bs=16M | pigz -d | dd of=/dev/sdb3 bs=16M conv=fdatasync
此命令完成后,您应该能够使用 mount 命令挂载复制的分区:
mount /dev/sdb3 /mnt/copied-partition/
请注意分区大小 - 它必须至少与原始分区一样大。