Как восстановить файл, удаленный в WSL, через explorer.exe?

Вопрос или проблема

Я получил доступ к моему Ubuntu по адресу \wsl.localhost\Ubuntu\home\user.ssh и удалил закрытый ключ, который мне не следовало удалять.

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

Все, что я читал о восстановлении удаленных файлов в Linux, связано с размонтированием диска и запуском extundelete или photorec.

Как я могу восстановить файл из монтирования WSL?

Восстановление удаленных файлов никогда не гарантировано. Чем меньше вы использовали файловую систему после удаления, тем выше шансы.

Способ попытки восстановления зависит от того, является ли ваша версия WSL1 или WSL2. Проверьте это из PowerShell с помощью:

wsl --shutdown # Чтобы убедиться, что мы перестали записывать на любой потенциальный файловый носитель
wsl -l -v
Для WSL2

К сожалению, мой тест следующих инструкций не был успешным. Это может быть связано с фундаментальным отличием в работе vhdx-файлов под WSL2 или с тем, как они монтируются. Я оставляю эти инструкции здесь в надежде, что вы или кто-то другой сможет определить, какие дополнительные действия могут сделать это успешным.

Файловая система хранится в виртуальном диске ext4.vhdx. В стандартной установке Ubuntu/WSL2 вы найдете его по адресу %userprofile%\AppData\Local\Packages\CanonicalGroupLimited<...>\LocalState\ext4.vhdx.

Скопируйте этот файл в другое место. Это копия, которую вы будете использовать для попытки восстановления. Назовите ее recovery.vhdx для избегания путаницы.

Следующий шаг зависит от вашей версии Windows. Это определенно будет проще всего сделать в Windows 11.

  • Для Windows 10 Home это будет сложно. Вероятно, лучше скопировать файл vhdx на USB-накопитель и попытаться получить доступ к системе Windows 11 (любой версии) или Windows 10 Pro или выше.

    Тем не менее, это возможно, но я сам этого никогда не делал. Вам потребуется:

    • Установить виртуальную машину, например, VirtualBox или VMWare. Это может потребовать отключения WSL2 (“Диспетчер виртуальных машин”) в “Включение и отключение компонентов Windows” в Настройках.

    • Установить гостевую ОС на базе Linux (например, Ubuntu) в виртуальной машине.

    • Установить libguestfs-tools, которые позволят вам монтировать vhdx-файл в Linux (см. этот ответ на Ask Ubuntu и другие).

    • Монтировать vhdx.

    • Запустить инструменты восстановления, такие как те, что вы упомянули в своем вопросе.

  • Windows 10 Pro или выше: также не самый простой вариант, но вы можете установить Hyper-V без отключения WSL2. Затем установите гостевую ОС Linux по шагам выше.

  • Если вы используете Windows 11, вы можете воспользоваться предварительной версией WSL, которая включает в себя возможность монтирования vhdx-файлов непосредственно в WSL2 (примечание для тех, кто читает это позже — это может быть уже выпущено, так что вы можете пропустить первый шаг ниже):

    • Установить “Предварительную версию Windows Subsystem for Linux” из Microsoft Store.

    • Из PowerShell выполните wsl --mount <path_to>\recovery.vhdx --vhd --bare. Не делайте этого на вашей “живой” системе Ubuntu ext4.vhdx; только на вашей резервной копии. Опция --bare присоединяет диск, но не монтирует его.

    • Запустите уже имеющуюся инстанцию Ubuntu.

    • Установите и запустите инструменты восстановления, такие как те, что вы упомянули в своем вопросе.

    • Установите инструменты восстановления

WSL1

Данные хранятся в файловой системе наложения, которая существует в том же каталоге LocalState, что и WSL2 ext4.vhdx, упомянутый выше.

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

Однако, если файл был удален из WSL1, он может все еще быть доступным для восстановления с диска NTFS. В этом случае следует попытаться использовать Windows инструменты восстановления.

Это было очень полезно, но монтирование vhdx в виртуальной машине не позволяет таким инструментам, как extundelete, получить доступ к данным, насколько я могу судить.

Вместо этого я смонтировал vhdx как второй жесткий диск на моей Ubuntu VM, так как HyperV может монтировать vhdx-файлы к виртуальной машине. Таким образом, я смог просканировать диск с помощью extundelete, так как виртуальный диск отображался как /dev/sdb. Никаких libguestfs-tools не требуется.

К сожалению, мои файлы не подлежали восстановлению, но я смог восстановить другие файлы с диска, так что подход кажется верным.

Ответ или решение

Восстановление удаленного файла в WSL (Windows Subsystem for Linux) из проводника Windows может быть сложной задачей. В этом контексте речь идет об удалении приватного ключа из монтированного WSL каталога \wsl.localhost\Ubuntu\home\user.ssh. Рассмотрим шаги и их нюансы для восстановления файла, учитывая детали проблемы и используемую версию WSL.

Шаги для восстановления удаленных файлов в WSL

1. Выясните версию WSL

Первым делом убедитесь, какая версия WSL у вас установлена. Выполните следующие команды в PowerShell:

wsl --shutdown # Остановить процессы, работающие в WSL
wsl -l -v # Проверить версию WSL

2. Восстановление файла в WSL2

Если у вас WSL2, данные хранятся в виртуальном диске ext4.vhdx. Этот диск можно найти в каталоге: %userprofile%\AppData\Local\Packages\CanonicalGroupLimited<...>\LocalState\ext4.vhdx.

a. Копирование диска

Сделайте копию этого файла (например, переименуйте ее в recovery.vhdx) в безопасное место. Это важно для предотвращения дальнейшего повреждения данных.

b. Использование Windows 11 для монтирования диска

На Windows 11 доступна функция предварительного просмотра WSL, которая позволяет монтировать vhdx файлы непосредственно:

  • Установите «Windows Subsystem for Linux Preview» из Microsoft Store.

  • Выполните команду из PowerShell:

    wsl --mount <path_to>\recovery.vhdx --vhd --bare
  • Запустите свою Ubuntu инстанцию и установите инструменты для восстановления, такие как extundelete или photorec, для попытки восстановления удаленных файлов.

3. Восстановление файла в WSL1

В случае WSL1, данные хранятся в overlay файловой системе. Для восстановления используйте Windows инструменты:

  • Избегайте прямого доступа к этим файлам через Windows приложения, так как это может вызвать потерю данных.
  • Проверьте наличие файла на диске с помощью инструмента восстановления NTFS, такого как Recuva или аналогичные программы.

Восстановление в виртуальной машине

Если выполнить вышеуказанные действия не удалось, можно воспользоваться виртуальной машиной на основе Hyper-V, установив Ubuntu как гость:

  1. Создайте виртуальную машину (VM) и настройте Ubuntu.
  2. Подключите recovery.vhdx как второй диск в VM.
  3. Используйте инструменты Linux для восстановления, такие как extundelete или photorec, обращаясь к новому диску как к /dev/sdb.

Заключение

Восстановление удаленных файлов в WSL – это процесс с неопределенными результатами. Чем меньше изменений в файловой системе после удаления, тем выше шансы на успех. Всегда полезно иметь резервные копии данных, особенно важных файлов, таких как криптографические ключи. Если восстановление неудачно, возможно, стоит пересмотреть процесс управления архивами и резервным копированием для минимизации подобных ситуаций в будущем.

При использовании дополнительных технологий или программ, на которых вы не специализируетесь, рекомендуем проконсультироваться с IT специалистом для профессиональной помощи.

Оцените материал
Добавить комментарий

Капча загружается...