使用 DD 命令克隆

使用 DD 命令克隆

如何使用 DD 将一个分区(而不是整个磁盘)备份到外部硬盘上的另一个分区?

我通过以下命令实现了这一点:

sudo dd if=/dev/sda6 of=/dev/sdb3 bs=1M 

但是我的要求是:

  1. 我需要将其备份/dev/sda6并存储为图像(.img)文件/dev/sdb3

  2. 最好作为压缩(.gz)图像文件(这实际上就是我想要实现的)

(以下是我的愚蠢尝试,显然没有奏效:

sudo dd if=/dev/sda6 of=/dev/sdb3/backup.img bs=4096 conv=notrunc,noerror

sudo dd bs=1M if=/dev/sda6 | gzip -c > /dev/sdb3/backup.gz

答案1

除非/dev/sdb3实际上已安装(我对此/dev/sdb3表示怀疑,请对设备和挂载点进行一些研究),您需要:

  1. 找出/dev/sdb3的安装位置。使用mount命令。假设/dev/sdb3安装在 中/home
  2. 将您的文件写入该位置:

    sudo dd if=/dev/sda6 of=/home/backup.img
    
  3. 完成后,验证 img 文件是否包含您所期望的内容。

另外,是否需要备份整个分割? 我通常发现使用或类似工具备份文件比在需要时压缩生成的备份目录更简单、更有用rsync。但这完全取决于您。

答案2

您要做的事情涉及 3 个简单步骤:

  1. 创建磁盘文件
  2. 将数据从分区复制到磁盘文件
  3. 压缩磁盘文件

创建磁盘文件

  1. 挂载并 CD 到要保存磁盘文件的分区
  2. 用于fallocate创建磁盘文件并预分配块。这比使用dd或其他工具用零填充文件创建文件要快得多。要指定磁盘文件大小,您可以使用MB/MiB/GB/GiB前缀。例如,如果您想要一个大小为 50 GiB 的磁盘映像,您可以这样做

    $ fallocate -l 50GiB part_backup.img

  3. 格式化磁盘文件。在此示例中,我使用ext4并禁用日志功能,因为在这种情况下不需要它

    $ mkfs.ext4 -O '^has_journal' part_backup.img

  4. 现在我们已经准备好磁盘文件,使用 挂载磁盘文件losetup。将--show选项传递给它,以便打印磁盘文件挂载到的环回设备,例如/dev/loop0

    $ sudo losetup --show -f part_backup.img

  5. 创建一个挂载文件夹,/mnt并将环回设备挂载到该文件夹​​中

    $ sudo mount /dev/loop0 /mnt/my_disk_file

将数据从分区复制到磁盘文件

  1. 挂载包含要备份的文件的分区并确定挂载点
  2. 用于rsync将文件复制到刚刚挂载的磁盘文件中。

    $ sudo rsync -avzPSX /mnt/media_partition/ /mnt/my_disk_file

  3. 如果您不确定,请在 rsync man 中查找每个 rsync opts 的作用。另请阅读有关备份源中尾部斜杠的说明

压缩磁盘文件

  1. 正常卸载磁盘文件

    $ sudo umount /mnt/my_disk_file
    $ sudo losetup -d /dev/loop0

  2. 用于gzip压缩磁盘文件

相关内容