恢復

恢復

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

相關內容