我从一个有两个分区的硬盘上创建了一个 backup.img 文件。现在我想将这些分区写入另一个硬盘。但问题是我不知道怎么做?如果我使用 dd,它会将完整的 backup.img 文件写入一个分区,然后我什么也看不到。请帮忙。
编辑 1 dd if = /XXX/backup.img of = /dev/sdb1
实际上 sdb 有许多分区,所以我无法将 backup.img 写入完整的磁盘。
答案1
例如,如果您制作了整个驱动器的映像,
/dev/sdb
那么您应该将其恢复为整个驱动器。但是如果您制作了分区的映像
/dev/sdb1
,那么您应该将其恢复到分区。
您可以使用 检查镜像文件的内容kpartx
。它可以看到目录结构(如果有的话)(而不仅仅是位于镜像头端的文件系统)。请参阅此示例,
地图:
$ sudo kpartx -av t-3.5g.img
add map loop0p1 (253:0): 0 6293372 linear 7:0 503907
add map loop0p2 (253:1): 0 1954 linear 7:0 1953
add map loop0p3 (253:2): 0 500000 linear 7:0 3907
删除地图:
$ sudo kpartx -d template-3.5GB.img
请注意,当其他工具看到时,分区的设备可能看起来像这样:
/dev/mapper/loop0p1
...
另一个例子,
$ sudo kpartx -av lubuntu-18.04.5-desktop-amd64.iso
add map loop0p1 (253:0): 0 2345472 linear 7:0 0
add map loop0p2 (253:1): 0 4928 linear 7:0 2314176
$ lsblk -f /dev/loop0
NAME FSTYPE LABEL UUID MOUNTPOINT
loop0 iso9660 Lubuntu 18.04.5 LTS amd64 2020-08-06-23-08-05-00
├─loop0p1 iso9660 Lubuntu 18.04.5 LTS amd64 2020-08-06-23-08-05-00
└─loop0p2 vfat EC34-71CF
$ lsblk -f /dev/mapper/loop0p1
NAME FSTYPE LABEL UUID MOUNTPOINT
loop0p1 iso9660 Lubuntu 18.04.5 LTS amd64 2020-08-06-23-08-05-00
当您知道自己拥有什么时,您也会知道如何克隆内容。但也可以挂载映射的源分区和目标分区并提取文件(使用rsync
或其他程序复制它们)。