不使用 wsl --import 或 --export 备份 WSL

act*_*ger 4 windows-subsystem-for-linux

我需要在计算机上重新安装 Windows,但保留所有文件,但我不确定它是否会保留或删除我安装的发行版。另外,我无法打开终端并运行wsl --import,因为终端挂起并且窗口由于某种原因最终崩溃。有没有办法备份 WSL 或者重置后可以恢复它?

编辑:忘记提及我正在使用 WSL 2

我忘记添加的最后一件事是,当我更换电脑时,我备份了 WSL 并将其导入,查看我的文件,看起来我有一个名为 ext4.vhdx 的文件,该文件是昨天访问更新的。这可能是我的发行版吗?这是否意味着我可以复制它?

Not*_*1ds 11

是的,Windows 安装往往会清除用户设置(即AppData),并且 WSL 文件通常安装在那里。在执行 Windows 重新安装之前备份发行版是一个好主意。正如您所说,通常这将通过 完成wsl --export/--import,但在您的情况下,这是不可行的。

对于 WSL2

在 WSL2 下,整个文件系统保存在名为ext4.vhdx. 您可以在 中找到它%userprofile%\AppData\Local\Packages\CanonicalGroup...\LocalState\ext4.vhdx。该...部分将根据您从商店安装的具体 Ubuntu 版本而有所不同。

在重新安装 Windows 之前备份此文件。确保 WSL 根本没有通过 a 运行wsl --shutdown(假设您仍然可以访问该命令)。如果不能wsl --shutdown,至少在备份文件之前重新启动 Windows,以确保该文件未被使用。如果您确实想确定的话,也可以在安全模式下运行。

重新安装后,您应该能够通过以下方式恢复:

  • 重新安装 WSL(如果需要,请不要忘记将默认版本设置为 2)
  • 从 Microsoft Store 重新安装 Ubuntu
  • 复制回ext4.vhdx刚刚安装的那个。

vhdx如果您有 Windows Professional 或更高版本,通过创建一个新的 Ubuntu VM 并将其(或者最好是 vhdx 的副本)附加为驱动器来测试可能也是明智之举。

我之前已经将 vhdx 从一个 WSL 安装复制到另一个安装上,没有出现任何问题,但当然不能保证它会完美运行。

假设它vhdx是有效的,作为后备,您可以将其安装为虚拟机中的虚拟驱动器,复制出必要的用户文件,然后仅复制新安装的文件。

对于 WSL1

对于遇到此问题并安装了 WSL1(可能除了 WSL2 之外)的其他读者来说,无法像使用 WSL2 那样备份和恢复整个文件系统。

但您仍然可以而且应该备份%userprofile%\AppData\Local\Packages\CanonicalGroup...\LocalState\rootfs. 它包含整个文件系统,因此任何必要的文件都可以复制回新安装中。但是,从该备份恢复整个文件系统并不安全,因为必须为每个文件/目录手动重置权限。

请注意,除了紧急情况外,切勿使用此目录,例如在 WSL 安装完全失败时需要恢复文件。根据 Microsoft 的说法,通过 Windows 访问这些文件可能会导致 WSL 安装损坏。