Восстановление файлов с сломанной машины Virtualbox.vdi
На моем Ubuntu 12.04.1, работающем на virtualbox, не хватило места, пока я устанавливал на него программное обеспечение, и теперь оно не перезагружается. У меня есть файлы, которые мне нужно восстановить. у меня есть ubuntu64.vdi
файл на моем ноутбуке с Windows 7 (хост), и мне было интересно, есть ли способ восстановить файлы из файла vdi.
Параллельно я сгенерировал новую машину 12.04.1 на виртуальной машине на том же ноутбуке, и я буду использовать ее вместо загруженной.
Я могу добавить разоренный vdi
к списку дисков в рабочем. Затем я использовал gnome nautilus, чтобы смонтировать разорванный диск.
Я могу найти там файлы, но им около 2 месяцев. Я думаю, что это совпадает с прошлым разом, когда я делал снимок виртуальной коробки машины, но не последний раз, когда я получил рабочую машину, которая была вчера. Есть ли способ монтажа vdi
по состоянию на вчера, прямо перед тем, как он разбился?
Редакция:
Вот что Virtual Media Manager
говорит мне о моем ubuntu64.vdi
файл:
EDITED2:
Я скопировал мой ubuntu.vdi
на внешний USB с большим количеством дискового пространства. Я пытался использовать Windows для клонирования, но получил ошибку:
Я попробовал то же самое с рабочей виртуальной машины через общую папку USB-накопителя, и она начала клонирование. Прошло много времени, но закончилось успешно:
root@precise64:/media/sf_E_DRIVE/copy_of_ubuntu64_vm_folder_20140224/ubuntu64#
VBoxManage clonehd ubuntu64.vdi ubuntu64.raw --format RAW
0%...
10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'RAW'. UUID: 90f99198-18e1-40ee-85fe-c083dcbb1ac3
EDITED3:
После создания необработанного файла я запускаю testdisk
с Deeper Search
Я получаю список вроде этого:
Атер Deeper Search
закончил, я получаю список, как это:
Но я не знаю, какой именно снимок... Есть идеи?
5 ответов
Из командной строки
Если мы используем Ubuntu в качестве хоста, мы можем преобразовать наш.vdi диск в сырой диск с помощью следующей команды:
VBoxManage clonehd <sourcename> <clone.raw> --format RAW
Затем мы можем открыть тестдиск с помощью этого файла, чтобы восстановить файлы на образе виртуального диска (также см. ниже):
testdisk <clone.raw>
Виртуальной машины
Если поврежденный образ диска VDI все еще зарегистрирован в Virtual Box, мы можем добавить этот образ в качестве диска на нашу новую виртуальную машину:
Запустите виртуальную Ubuntu, в которую мы добавили сломанный.vdi, но не монтируем диск.
Создайте каталог на смонтированном разделе для хранения собранных данных (например,
~/rescued
),Установить тестдиск на виртуальной машине.
Запустите там тестдиск с терминала:
sudo testdisk
Выберите подходящий диск для сбора данных (здесь показано для
/sdb
) и выберите[Proceed]
Выберите подходящий макет раздела (обычно
Intel
)Выбрать
[Analyse]
-[Quick Search]
Выберите раздел, содержащий данные для сбора (здесь присутствовал только один раздел NTFS):
Нажмите P, чтобы вывести список файлов этого раздела.
Перейдите в каталог, содержащий данные. Просмотрите имена файлов, чтобы убедиться, что вы выбрали правильные.
Выберите каталоги или файлы для сбора с помощью :. Все выбранные файлы / каталоги будут отмечены зеленым:
Нажмите клавишу C в верхнем регистре, чтобы скопировать все выбранные каталоги / файлы в каталог восстановления, который будет выбран на следующем шаге.
Выберите каталог на смонтированных разделах вашей виртуальной машины Ubuntu для хранения восстановленных данных:
Нажмите c, чтобы начать копирование данных из поврежденного.vdi в наш каталог восстановления в вашей здоровой виртуальной машине.
Заметки:
В случае, если мы не можем увидеть наши файлы с
[Quick Search]
вариант в 6. мы можем выполнить[Deeper Search]
, Это также перечислит предыдущие удаленные и перезаписанные разделы. Поэтому нам нужно убедиться, что мы выбрали соответствующие разделы, в которых находятся наши данные.Если бы мы сделали снимки.vdi, мы можем найти их в
~/.VirtualBox/Machines/<Name of Machine>/Snapshots/{###}.vmdk
но всякий раз, когда мы использовали функцию снимка Virtual Box, любые изменения снимка будут записаны в дифференциальный файл.Чтобы объединить дифференциальный файл с жестким диском, нам нужно удалить все снимки (что, вероятно, не то, что нам нужно, так как тогда мы могли бы просто восстановить предыдущий снимок, а не вызывать восстановление данных), или нам нужно клонировать диск машины, используя:
VBoxManage clonehd <name_of_source> <clone>
Затем мы связываем клон с нашей спасательной виртуальной машиной, как показано выше.
Запись в поврежденный.vdi должна выполняться только после того, как данные были в безопасности, так как это может привести к дальнейшему повреждению файловой системы.
В случае, если наша спасательная Ubuntu слишком мала для хранения восстановленных данных, мы можем создать еще один новый виртуальный диск для привязки к ВМ. Затем этот диск должен быть смонтирован в виртуальной машине, чтобы иметь возможность сохранять данные с тестового диска там.
1) Попробуйте восстановить снимок по UUID, используйте следующий хак:
- выберите UUID состояния, которое вы хотите восстановить.
- Откройте файл.xml, желательно в инструменте (работает Internet Explorer), который позволяет легко перемещаться по файлу XML.
- В "ОЧЕНЬ НИЖЕ" в разделе "Контроллеры хранения" найдите UUID текущего состояния и запомните параметры "Имя хранилища", "Тип" и "Тип AttachedDevice=, порт =" и "Устройство = настройки".
- В середине найдите нужный снимок.
- В разделе "Контроллер хранилища" снимка найдите AttachedDevice со значениями (имя / тип / тип / порт / устройство), которые соответствуют значениям, полученным выше.
- Этот образ UUID идентифицирует снимок для жесткого диска. Снять скобки {} и
введите команду C:> VBoxManage clonehd <UUID> CloneDisk.vdi
Надеюсь, это поможет, я нашел решение здесь: ( https://forums.virtualbox.org/viewtopic.php?t=791)
2) если шаги в 1) не работают, вот другие шаги, которые вы можете попробовать. Как клонировать текущее состояние диска:
- Откройте диспетчер виртуальных носителей (Меню: Файл> Диспетчер виртуальных носителей).
- Перейдите на жесткий диск, который вы хотите клонировать, и полностью раскройте дерево (используйте клавишу * на цифровой клавиатуре).
- Найдите файл {hexUUID}.vdi, который прикреплен к виртуальной машине, для которой вы хотите клонировать текущее состояние. Это будет (один из) листовых файлов в конце ветви. Когда вы выбираете его, текст "Attached to:" в нижней части окна будет отображать: "Attached to:", без (имя снимка) в скобках после него.
- Щелкните по имени файла справа от "Location:", отображаемого в нижней части окна.
- Ctrl + C / Копировать, чтобы скопировать текст в буфер обмена, который будет выглядеть примерно так: (путь) {b6441469-5ccb-418c-8fdd-73c5e1a17314}.vdi
- Ctrl + V / Вставьте и извлеките значение hexUUID (снимая скобки {}) и запустите clonehd, чтобы клонировать его!
Это решение отсюда: ( http://www.i-m-code.com/blog/blog/2012/02/04/virtualbox-clone-snapshots/) Оба говорят в основном об одном и том же.
Обнаружил, что мой поврежденный файл vdi можно восстановить с помощью 7-Zip, надеюсь, этот простой метод тоже кому-то поможет.
У меня была система Linux повреждена в /
а также fsck
не мог это исправить. Я использовал следующий простой подход:
- Добавьте новый VDI для замены на машину.
- Загрузите новый linux ISO.
- Загрузите и установите новый linux на диск, который вы добавили в (1).
- Смонтируйте диск в вашей новой системе и скопируйте нужные вам файлы. Обычно это означает копирование
/home/user/
папка. Не забудьте скопировать скрытые файлы (файлы настроек).
Хорошо сработало для меня. Повреждение диска только мешало загрузке, в моей домашней папке не было потери данных.
Запустите старую виртуальную машину после вставки Ubuntu ISO. Ubuntu проанализирует машину. Выберите «Попробовать ubuntu» (очевидно, ничего не устанавливайте и не стирайте данные). Как только он загрузится (и это произойдет, потому что он использует Ubuntu ISO, а не вашу старую неработающую установку), в браузере (Nautilus) выберите «Другие местоположения», чтобы перейти к вашим старым данным и переместить их в безопасное место.
Я не пытался починить машину, но меня интересовало только восстановление данных и перенос их на новую виртуальную машину. Вероятно, таким образом можно сделать то, что предлагает главный ответ, прямо со старой загруженной машины.