Я регулярно делал полные резервные копии своего жесткого диска (со всеми разделами) с помощью dd
инструмента as backup.img
file. У меня есть несколько таких файлов.
Теперь, когда мой старый жесткий диск вышел из строя, как мне использовать 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 сделать свое волшебство на устройстве loopback. Первое сканирование:
# 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