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