2

У меня есть образ моего домашнего (/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 ГБ.

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

Вы не хотите сообщать диску, что он больше, чем есть на самом деле, записывая таблицу разделов с диска большего размера на диск меньшего размера. Первые 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 ответа3

4

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

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

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

Эта проблема в основном возникает, когда каким-либо образом образ файловой системы 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.

0

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

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

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

Флавио

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .