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


2

У меня есть образ моего /dev/sda3раздела home ( ), который я создал с помощью команды "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", который также пуст.


Вы уверены, что получили все это? Вы пробовали монтировать disk.img перед удалением раздела?
Пол

Я не видел этого лично, но на этой странице описана похожая проблема: linuxquestions.org/questions/linux-general-1/… Может, вы могли бы попробовать команду resize2fs? Сначала сделайте резервную копию файла образа.
Grifferz

@Paul Я не пробовал монтировать disk.img до того, как удалил раздел :(
Keeper Hood

@grifferz Я не уверен, что могу изменить размер файловой системы в этой ситуации, так как у меня нет свободного места для изменения размера. Мой корневой раздел был 8 ГБ, а дома выше 100 ГБ. Затем мой X потерпел крах и не отображал ошибок свободного места, после этого я сделал изменение размера через gparted и дал root 32 ГБ и домашнему, что осталось. Поэтому я не могу увеличить свой раздел, я ищу способ скопировать данные с disk.img. Нет ли способа пропустить пустые блоки и просто посчитать данные?
Хранитель Худ

В статье, на которую я ссылался, они делают resize2fs на блочном устройстве, что создает им проблемы. Так что в вашем случае это будет файл изображения disk.img. Вы будете изменять размер файловой системы внутри нее, а не самого файла или какой-либо другой части вашей системы.
Grifferz

Ответы:


4

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

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

0

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

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

truncate -o -s 29009610 /path/to/disk.img 
mount -o loop /path/to/disk.img /mng/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


Осторожнее с этим. Для меня losetup -f ./corrupted.imgсъел всю доступную оперативную память плюс пространство подкачки. Невозможно отменить его (так как я переключился на другой виртуальный экран и не смог переключиться обратно из-за нагрузки), он заморозил мою машину, и мне пришлось перезагрузить компьютер, фактически потеряв все открытые окна и несохраненную работу (последняя, ​​к счастью, была маленькой) ).
Иззи

@ Иззи, мне жаль слышать, что у тебя были проблемы. Я нахожу странным, что потерянная память съела вашу оперативную память. Я смонтировал образы в сотнях гигабайт без проблем. Переключатель "-f" - единственный, который вы использовали?
Gogeta70

Да, почти дословно скопировано с вашего ответа. В моем случае это было испорченное изображение ext4. Данные не теряются, только расположение открытых окон, поэтому никакого реального вреда не причинено. Понятия не имею, что вызвало это. Похоже, он пытался загрузить весь восстановленный образ в оперативную память. Если бы я не переключился на другой рабочий стол, я бы, вероятно, сделал бы Ctrl-Cэто вовремя. Но 100% загрузка процессора на всех ядрах сделала невозможным переключение обратно. // TL; DR: никакого вреда не было, просто хотел оставить заметку, чтобы держать глаза открытыми и быть в курсе при этом.
Иззи
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.