恢复

恢复

dd我使用工具即文件定期对硬盘(包含所有分区)进行完整备份backup.img。我有几个这样的文件。

现在我的旧硬盘坏了,如何使用backup.img文件在新硬盘上写入,以便我的所有分区和文件完好无损,如图所示。

还可以从此类文件中提取部分数据(几个文件/文件夹)吗backup.img

答案1

恢复

您可以使用以下内容将映像恢复到更换的硬盘上:

# dd if=backup.img of=/dev/sd?

您最终将获得原始磁盘的克隆,包括所有分区和数据。

这样做的缺点是分区不会调整大小,dd因此替换磁盘的容量必须与原始磁盘相同或更大。

如果您对此感到满意,可以使用包含或类似的可启动映像gparted(例如 Parted Magic)并调整分区大小以适应新磁盘。

安装

要安装图像,您需要使用losetup.

旧方法

较旧的方法是计算到分区开头的偏移量,如下所示:

运行fdisk并查找扇区大小:

# fdisk -l backup.img
Disk backup.img: 8 GiB, 8589934592 bytes, 16777216 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: 0x91999386

Device      Boot   Start      End  Sectors  Size Id Type
backup.img1 *       2048  1026047  1024000  500M 83 Linux
backup.img2      1026048 16777215 15751168  7.5G 8e Linux LVM

要计算您的偏移量,请阅读开始您感兴趣的分区列,并将该值乘以您的扇区大小。例如,要阅读backup.img1上面的内容,请乘以 2048 x 512 = 1048576。

使用该值作为偏移量,losetup如下所示:

# losetup -o 1048576 /dev/loop0 backup.img

然后安装环回设备:

# mount -t ext4 /dev/loop0 /mnt

稍后的方法

较新版本的losetup将扫描并自动/dev/loop为映像中的所有分区创建条目,如下所示:

# losetup -Pf backup.img
# ls /dev/loop0*
/dev/loop0  /dev/loop0p1  /dev/loop0p2
# mount -t ext4 /dev/loop0p1 /mnt

LVM分区

我上面的示例将第二个分区显示为 LVM。要从中提取文件,只需让 LVM 在环回设备上发挥它的魔力即可。初次扫描:

# pvs
  PV           VG            Fmt  Attr PSize PFree 
  /dev/loop0p2 fedora-server lvm2 a--  7.51g 40.00m

然后激活 VG(注意上面命令中的 VG 名称,你的可能与我的不同):

# vgchange -a y fedora-server
  2 logical volume(s) in volume group "fedora-server" now active

检查您有哪些分区:

# ls /dev/fedora-server/
root  swap

并安装其中之一:

# mount -t ext4 /dev/fedora-server/root /mnt

出口

提取文件后:

# umount /mnt
# losetup -d /dev/loop0

或对于 LVM 安装:

# umount /mnt
# vgchange -a n fedora-server
  0 logical volume(s) in volume group "fedora-server" now active
# losetup -d /dev/loop0

相关内容