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

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

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

编辑:忘了说我正在使用 WSL 2

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

答案1

是的,Windows 安装往往会清除用户设置(即AppData),而 WSL 文件通常安装在那里。在执行 Windows 重新安装之前备份发行版是个好主意。正如您所说,通常可以使用 来完成此操作wsl --export/--import,但对于您而言,这是不可行的。

对于 WSL2

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

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

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

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

vhdx如果您拥有 Windows Professional 或更高版本,那么通过创建新的 Ubuntu VM 并将其(或者最好是 vhdx 的副本)作为驱动器连接来进行测试也是明智之举。

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

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

对于 WSL1

对于遇到此问题并安装了 WSL1(可能除了 WSL2)的其他读者,没有办法备份和恢复全部的文件系统与 WSL2 相同。

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

请注意,除非紧急情况,例如当 WSL 安装完全崩溃时需要恢复文件,否则您永远都不要使用此目录。通过 Windows 访问这些文件可能会导致 WSL 安装损坏根据微软

相关内容