Можно ли смонтировать образ диска, созданный с помощью 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
Флавио