You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

WSL2完全冻结无法运行任何发行版,如何在无Shell访问的情况下恢复数据?

WSL2完全冻结无法运行任何发行版,如何在无Shell访问的情况下恢复数据?

哎呀,这种WSL突然完全冻住的情况真的太闹心了,连基本命令都用不了,还得着急救数据——别慌,咱们可以绕过WSL本身,直接从Windows文件系统入手来恢复数据,具体方法如下:

核心思路:直接操作WSL2的磁盘镜像文件

WSL2的每个发行版数据都存在一个独立的ext4.vhdx虚拟磁盘文件里,我们可以直接找到这个文件,挂载后导出数据,完全不需要通过WSL的Shell或命令工具。

步骤1:定位WSL2的磁盘镜像文件

重启电脑后,绝对不要启动任何WSL发行版,也尽量少运行wsl命令(避免触发冻结),然后按下面的步骤找文件:

  • 打开文件资源管理器,在地址栏输入%USERPROFILE%\AppData\Local\Packages,回车进入文件夹
  • 在里面找到对应发行版的文件夹:比如Ubuntu的文件夹名类似CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc,Debian的话会包含DebianProject字样,以此类推
  • 进入该文件夹后,找到LocalState目录,里面的ext4.vhdx就是你要找的发行版磁盘镜像

步骤2:挂载镜像并访问数据

因为WSL2用的是ext4文件系统,Windows默认不支持读写,所以需要借助工具来处理:

  1. 打开「磁盘管理」:按下Win+X,在弹出的菜单里选择「磁盘管理」
  2. 点击顶部的「操作」→「附加VHD」,浏览选中刚才找到的ext4.vhdx文件。如果只是恢复数据,建议勾选「只读模式」,避免误操作损坏原有数据
  3. 安装ext4文件系统支持工具:比如免费开源的Ext2Fsd,安装完成后打开它的管理界面
  4. 在Ext2Fsd里找到刚才挂载的虚拟磁盘,给它分配一个驱动器号(比如Z:)
  5. 现在你就可以在文件资源管理器里打开这个驱动器,直接复制发行版里的所有文件到Windows的其他磁盘分区了

备选方案:抓住系统启动的窗口期尝试备份

你提到系统刚启动时还能运行wsl -l -v这类命令,那可以试试在这个窗口期快速执行备份:

  1. 重启电脑后,立刻打开管理员权限的命令提示符
  2. 快速输入备份命令:wsl --export <你的发行版名称> D:\wsl_backup.tar
    • 比如你的发行版是Ubuntu-22.04,命令就是wsl --export Ubuntu-22.04 D:\ubuntu_backup.tar
  3. 这个方法的关键是“快”,一旦WSL开始冻结就会失效,如果执行后还是挂,就回到上面的磁盘镜像方法就行

备注:内容来源于stack exchange,提问作者lemek

火山引擎 最新活动