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