如何从 HDD 备份(而不是“wsl --export”备份)恢复 WSL2 文件?

如何从 HDD 备份(而不是“wsl --export”备份)恢复 WSL2 文件?

我遇到了一个严重的 Windows 10 更新问题,导致我无法安装 Windows。不幸的是,我没有 Windows 备份。

我最终将其加载到双启动 Ubuntu 中,使用 dc3dd 备份整个 Windows HDD,重新安装 Windows,然后将 dc3dd 备份恢复到单独的分区中。

这样,我现在可以从新的 Windows 安装访问所有旧的 Windows 文件。

但我在旧 Windows 上的 WSL2 Ubuntu 中有一些重要的项目,我想恢复它们。显然,如果我有 wsl --export 备份 - 这不是问题,但我没有。

据我所知,这并不像在旧文件系统的深处找到它们那么简单,因为它们存在于某种虚拟机文件中。

那么我该如何解决这个问题?

谢谢

答案1

对于 WSL2 来说现在相当简单。

  1. 首先,您需要找到ext4.vhdx这些发行版中的文件。如果您从 Microsoft Store 安装了发行版,则它们将位于:

    <backed_up_drive>\Users\<username>\AppData\Local\Packages\<package_name>\LocalState\ext4.vhdx
    

    对于 Ubuntu 发行版,软件包名称将以“Canonical”开头。

    将文件移动ext4.vhdx到新系统上的某个位置。我使用类似以下方法:

    $ENV:userprofile\WSL\instances\Ubuntu_22.04_WSL2_Shkarik
    
  2. 接下来,确保安装了最新的 Windows 10 更新。然后,你应该能够安装 WSL本身从 Microsoft Store 使用这一页。这是比 Windows 10 更高版本的 WSL,并且它具有该--import-in-place选项。

  3. 安装新的 WSL 后,打开 PowerShell(以普通用户身份,不是管理员),导航到放置的目录ext4.vhdx并:

    # Import
    # wsl --import-in-place <new_distro_name> <path_to_vhdx>
    
    wsl --import-in-place Ubuntu_22.04_WSL2_Shkarik ./ext4.vhdx
    
    # Optionally, set it as the default, if there are any others installed
    wsl --set-default Ubuntu_22.04_WSL2_Shkarik
    
    # Start it with:
    wsl ~
    # or
    wsl ~ -d Ubuntu_22.04_WSL2-Shkarik
    
  4. 一旦进入发行版,您将成为 root 用户。您可以为每个用户设置默认用户这个答案

或者,您可以重新安装 Ubuntu,然后将旧版本复制ext4.vhdx到新版本上。但是,我更喜欢能够自己选择发行版的位置和名称(如上所述)。它还允许您快速安装另一个副本(用于测试),而ubuntu.exe不会干扰您的“日常”文件。

相关内容