在单独的 Windows 安装中查找 WSL 2 文件

在单独的 Windows 安装中查找 WSL 2 文件

我有一个安装了旧 Windows + WSL 2 的驱动器。我想备份 WSL 文件系统,但找不到文件。

由于某种原因,中唯一的文件D:\wsl$\D:\wsl$\Arch\home\username\.ssh\config。它们可能位于其他位置吗?驱动器上只有一个分区。

答案1

这会很棘手D:\wsl$\可能这是一个转移注意力的噱头,很可能是由前一个用户产生的一些副作用造成的。

该驱动器上 WSL 安装的文件位置(以及如何备份它们)取决于两件事:

  • 安装是 WSL1 还是 WSL2。
  • 已安装的发行版。根据我的经验,虽然 Ubuntu 是使用最广泛的 WSL 发行版,但它可能是其他发行版之一。也可能是多个发行版。

完整而正确的答案(但可能有些过度)是:

  • 运行 regedit,导航到 HKEY_USERS
  • 文件->加载 Hive,导航到您获得的驱动器上的用户 Windows 配置文件(例如D:\Users\username\),然后在他们的配置文件目录中加载NTUSER.DAT
  • 在 RegEdit 中为配置单元命名,例如previoususer
  • 导航HKEY_USERS\previoususer\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss
  • 那里的任何子项都应该包含BasePathWSL 文件的位置(相对于原来的驱动器位置)。

但正如我所说,这可能有点小题大做。

假设只安装了一个 WSL 发行版,并且它是 Ubuntu,则文件将可能D:\Users\username\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState

如果安装的是 WSL1,则文件系统将在该目录中可见。请注意,虽然在像这样的已停用的 WSL1 安装上访问这些文件是可以的,但以这种方式访问​​实时 WSL1 文件系统可能会腐败它

如果安装的是 WSL2,那么所有内容都将位于以ext4.vhdx该文件夹命名的虚拟 HDD 中。

访问其中的文件ext4.vhdx比较棘手,因为 Windows 无法挂载该虚拟磁盘,因为它不理解 ext4 文件系统。

您需要:

  • 使用类似以下命令在 Linux 系统中挂载虚拟磁盘这个答案. 注意——可能可以从您的 WSL2 实例中工作,但我还没有尝试过。

  • 使用 备份 Windows 安装上的现有 WSL wsl --export,然后使用 创建新实例wsl --import NewDistroName <some_directory> <the_tar_file_from_the_export> --version 2。然后将vhdx文件从旧驱动器复制到您创建位置vhdx的文件上<some_directory>。有点儿像黑客,但确实有效。

  • 等待 Windows 10 的 2021H2 版本,该版本将包含将这些文件直接安装到另一个 WSL 实例的功能。或者运行 Windows Insider/Preview 以立即访问此功能(需要注意的是,它是一个具有已知错误的“预览”版本)。

答案2

假设它是运行 Ubuntu 的默认 WSL2 安装,你应该ext4.vhdx在以下位置找到该文件:OldDrive:\Users\<user>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState

在新系统中创建 WSL Ubuntu 安装,然后执行wsl --shutdown上述操作并将其复制ext4.vhdx到新系统中的相同位置。您将在新安装中拥有一个 ext4.vhdx,您将覆盖它。

请注意,使用wsl --import,可能会ext4.vhdx在非标准位置创建文件。如果在旧驱动器上出现这种情况,则需要先找到它。

相关内容