如何从旧系统磁盘恢复 WSL 1 并在新系统上使用

如何从旧系统磁盘恢复 WSL 1 并在新系统上使用

更新后 Windows 坏了。我无法修复它,因此无法从系统访问它。

在旧系统上,我使用的是 Ubuntu 的 WSL 1。我没有备份或导出。

在开始重新创建它之前,我想尝试恢复整个环境。

对于 WSL 2,该位置C:\Users\{user_name}\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\将有一个磁盘映像。WSL 1 具有类似 Linux 的目录结构。

我在新系统上创建了 WSL,并安装了与旧系统相同版本的 Ubuntu。

也许将这些目录从旧计算机复制到新计算机会有所帮助,但我不知道如何在 Windows 上执行此操作,以免弄乱 Linux 文件权限

有谁遇到过类似的问题吗?

答案1

几年前,当我需要重置 Windows 时,我也经历过类似的经历。我做了wsl --export,但我陷入了不测试备份/恢复的古老陷阱,导致恢复时导入永远无法完成。

不过,对于你的情况,我反复思考了这个问题。我的结论是,你大概和我一样。您需要复制单个文件,但恢复整个文件系统并不是一个好主意。

也许将这些目录从旧计算机复制到新计算机会有所帮助,但我不知道如何在 Windows 上执行此操作,以免弄乱 Linux 文件权限

完全正确——权限和所有权可能会导致此问题。

Linux 元数据存储在 NTFS 扩展属性中(根据这个微软开发博客)。 如果如果你能保证你正在复制 EA,那么你可以:

  • 在新 PC 上创建新的 Ubuntu 20.04 WSL1 发行版
  • 删除新的rootfs
  • 复制旧的rootfs

但是,除了 Linux 权限和所有者正确显示外,我没有好的方法来告诉你如何确保 EA 被正确复制,即使你可以,你也无法检查文件系统中的每个文件。对我来说,没有内置的 Windows 功能(内核/API 除外)来检查和修改 EA,这非常奇怪。似乎有适用于 PowerShell 的第三方库,但我还没有尝试使用它们来检查 WSL1 EA。

如果我选择“复制”路线,我可能总会怀疑 WSL1 的安装,所以我可能仍会选择我最初的路线,并且:

  • 在新 PC 上安装全新的 WSL1 发行版。

  • 重新安装/重新配置应用程序和服务——将旧的复制/var/log/apt/history.log到临时位置并运行grep "^Commandline" history.log以获取已安装的软件包列表。

  • 复制/etc/您记得的任何配置。您可以复制文本配置文件从旧到新,而不是通过复制文件本身来潜在地弄乱权限。

  • 从我的旧主目录复制文件,我知道我可以使用chmod/轻松修改chown

相关内容