我有一个安装了旧 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
。 - 那里的任何子项都应该包含
BasePath
WSL 文件的位置(相对于原来的驱动器位置)。
但正如我所说,这可能有点小题大做。
假设只安装了一个 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
在非标准位置创建文件。如果在旧驱动器上出现这种情况,则需要先找到它。