Можно ли смонтировать образ диска, созданный с помощью dd, в каталог на подключенном внешнем USB-жестком диске?

У меня есть изображение моего дома (/dev/sda3) раздел, который я создал с помощью команды "dd".

dd if=/dev/sda3 of=/path/to/disk.img

Я удалил домашний раздел через gparted, чтобы увеличить мой /dev/root раздел. Тогда я воссоздал /dev/sda3 раздел, который меньше по размеру, чем тот, который я скопировал на образ.

Мне было интересно, так как у меня есть внешний жесткий диск емкостью 2 ТБ, можно ли было установить мое резервное копирование на внешний жесткий диск, а затем скопировать файлы в /home каталог. Поскольку внешний жесткий диск уже находится в "смонтированном состоянии", я не уверен, является ли это хорошей идеей при установке на смонтированное устройство.

  • Я использую Slackware 13.37 (64 бита).
  • использовал ext4 на всех разделах.
  • изменил размер корневого раздела с помощью gparted live cd.

Я пробовал:

mount -t ext4 /path/to/disk.img /mng/image -o loop

Это дало мне ошибку fs (неправильный тип fs, неправильная опция, плохой суперблок в dev/loop/0)

Тогда я сделал

dmesg | tail

какие выводы:

EXT4-fs (loop0): неверная геометрия: количество блоков 29009610 превышает размер дефайса (1679229 блоков)

Я понятия не имею, что делать, я хочу восстановить свой /home данные из изображения, которое я скопировал.

[Обновление]: * disk.image находится на моей флешке USB 16GB. Размер изображения составляет около 6 ГБ. Изображение было создано из удаленного раздела размером около 100 ГБ, а теперь оно уменьшено до 80 ГБ.

[Обновление]: Я попробовал это сегодня: LQWiki: В некоторых примерах dd написано:

Вы не хотите сообщать диску, что он больше, чем есть на самом деле, записывая таблицу разделов с диска большего размера на диск меньшего размера. Первые 63 сектора диска пусты, кроме сектора 1, MBR.

dd if=/dev/sda skip=2 of=/dev/sdb seek=2 bs=4k conv=noerror

Я тогда пытался смонтировать /dev/sda3 в /home,dmesg | tail выводит ошибку "дескрипторы группы повреждены!"

Тогда я попробовал:

fsck.ext4 -y -f /dev/sda3

Он выводит большое количество исправленных проблем и миллионы чисел, падающих со скоростью света.

После этого я успешно смонтировал /dev/sda3 в /home, но в домашнем каталоге не было данных. Только какой-то каталог с именем "lost+found", который также пуст.

3 ответа

Почему бы тебе не

sudo losetup /dev/loop0 /path/to/disk.img
mkdir /mnt/image
sudo mount /dev/loop0 /mnt/image

Я знаю, что это старый вопрос, но я столкнулся с этой же проблемой два дня назад и смог ее решить.

Эта проблема в основном возникает, когда каким-либо образом образ файловой системы ext2/3/4 не полностью копируется в файл образа, по существу оставляя часть данных отсутствующей в конце. Из-за этого вы не сможете восстановить все файлы, которые существовали в исходном образе, если каким-то чудом никакие файловые данные не были сохранены в недостающей части изображения.

В моем случае мне не удалось смонтировать образ, но есть утилита, которая сканирует образы файловой системы ext2/3/4 и выводит все найденные файлы в указанное место:

bash$ losetup -f ./corrupted.img # mounts to /dev/loop0
bash$ sudo debugfs -c /dev/loop0
debugfs: rdump / /path/to/dump/files/
debugfs: quit

Команда rdump принимает два аргумента: путь внутри поврежденного изображения для рекурсивного сканирования файлов и путь в исходной файловой системе для сохранения файлов. Любые файлы, которые не удалось восстановить, будут созданы с размером 0 байт.

Вам, вероятно, нужно будет упаковать файлы, так как debugfs запускается от имени пользователя root.

Попробуйте обрезать файл до превышения числа блоков, а затем перемонтировать.
В вашей ситуации:

EXT4-fs (loop0): неверная геометрия: количество блоков 29009610 превышает размер дефайса (1679229 блоков)

truncate -o -s 29009610 /path/to/disk.img 
mount -o loop /path/to/disk.img /mng/image

Флавио

Другие вопросы по тегам