dd
私は、tool as fileを使用して、ハードディスク (すべてのパーティションを含む) の完全バックアップを定期的に作成しましたbackup.img
。そのようなファイルがいくつかあります。
古いハードディスクが故障したので、backup.img
イメージにあるようにすべてのパーティションとファイルをそのまま残すために、ファイルを使用して新しいハードディスクに書き込むにはどうすればよいですか。
また、そのようなファイルからデータの一部(いくつかのファイル/フォルダー)を抽出することは可能ですかbackup.img
?
答え1
復元する
次のような方法で、交換した HDD にイメージを復元できます。
# 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 パーティション
上記の例では、2 番目のパーティションが LVM として表示されています。これらのパーティションからファイルを抽出するには、ループバック デバイスで LVM の魔法を実行するだけです。最初のスキャン:
# pvs
PV VG Fmt Attr PSize PFree
/dev/loop0p2 fedora-server lvm2 a-- 7.51g 40.00m
次に、VG をアクティブ化します (上記のコマンドの VG 名に注意してください。おそらく、VG 名は私のものとは異なります)。
# vgchange -a y fedora-server
2 logical volume(s) in volume group "fedora-server" now active
どのようなパーティションがあるか確認します:
# ls /dev/fedora-server/
root swap
そしてそのうちの1つをマウントします。
# 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