使用 Linux Live USB 恢复 WSL 文件?

使用 Linux Live USB 恢复 WSL 文件?

的背景

  • 我的 Windows 10 笔记本电脑电池坏了,启动时断电,现在无法成功启动 Windows(它在启动过程中尝试使用自动修复实用程序修复此问题,但每次都失败)。
  • 我想通过 USB 记忆棒将笔记本电脑启动到 Ubuntu 实时环境,并将一些文件从 WSL 发行版复制到我的 USB 记忆棒。

问题

  • 虽然我可以从我的 Ubuntu Live USB 访问我的 Windows 驱动器和所有常规 Windows 文件,但我似乎找不到任何 WSL 文件。

问题

  • 似乎我应该能够运行类似的命令find . -type d -name "my-directory-in-wsl"并找出 WSL 文件在我的驱动器上的位置。我试过这个但没有成功。这应该有效吗,或者 WSL 文件是否存在于正常文件系统之外?是否有希望恢复这些文件?

答案1

如果您使用的是 WSL2(假设,因为您应该使用该搜索在驱动器上找到 WSL1 文件),则 WSL 发行版的整个文件系统都在虚拟 SDD 中。正如 @blami 在评论中提到的,您会在以下位置找到它:

%PROFILE%\AppData\Local\Packages\<distro package>\LocalState\ext4.vhdx

对于 Ubuntu(默认),软件包名称将以“典范”.因此类似于:

OldDriveLetter:\Users\<your_old_username>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx

您还可以搜索OldDriveLetter:\Users\<your_old_username>\AppData\Local\Packages任何ext4.vhdx文件。

ext4.vhdx文件复制到您的 USB 驱动器。

至于恢复,最安全/最好的方法是使用安装了最新 WSL 的另一个 Windows 系统,并且:

  1. 将文件复制ext4.vhdx回 Windows 系统上的某个位置(最好不要尝试从 USB 驱动器访问它)。为了便于下面的示例,我们假设它位于 中C:\WSL\instances\Recovered

  2. 将分发版导入到该 WSL 实例中:

    wsl --import-in-place RecoveredWSL 
    C:\WSL\instances\Recovered\ext4.vhdx
    

    请注意,此命令需要从 Microsoft Store(或通过最新的 Windows 版本)wsl安装的 WSL 版本。wsl --install

    当然,您也可以使用其他名称。导入后,您可以通过以下方式访问发行版:

    wsl ~ -d RecoveredWSL
    

    您还可以将其设置为默认值,这样就可以通过以下方式轻松启动wsl

    wsl --set-default RecoveredWSL
    

如果你确实需要从“真实” Ubuntu 实例访问文件,那么可能有点复杂,因为你需要将该vhdx文件挂载到 Ubuntu。我自己没有这样做过,但有些人看到这个答案在 Ask Ubuntu 上寻找可能性。

重要的:如果ext4.vhdx使用此方法访问,请确保您正在使用辅助副本,因为 Ask Ubuntu 上的其他问题表明可能性使用这些工具来防止腐败。

相关内容