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

无需USB启动,如何恢复WSL Ubuntu中被rm -rf命令删除的文件夹?

无需USB启动,如何恢复WSL Ubuntu中被rm -rf命令删除的文件夹?

别急,我来给你几个不用USB启动就能尝试恢复的方法,先得区分你用的是WSL1还是WSL2,因为两者的文件存储机制差异很大,恢复思路也不一样:

首先,紧急操作:停止WSL避免数据覆盖

不管用哪种方法,第一步必须立刻停止WSL,防止新的写入操作覆盖你删除的文件——这是恢复成功的关键!
在Windows命令提示符或PowerShell里执行:

wsl --shutdown

方法一:针对WSL2(最常见的情况)

WSL2的Ubuntu系统数据是存在一个虚拟磁盘文件(.vhdx)里的,我们可以直接在Windows里处理这个镜像文件:

  1. 找到VHDX文件的位置
    通常路径是:

    C:\Users\<你的Windows用户名>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu<版本号>LTS_<随机字符串>\LocalState\ext4.vhdx
    

    比如Ubuntu20.04的话,路径里的包名是CanonicalGroupLimited.Ubuntu20.04LTS_79rhkp1fndgsc,你可以在Packages文件夹里找对应Ubuntu的目录。

  2. 挂载VHDX并使用Windows恢复工具

    • 打开Windows的「磁盘管理」(右键开始菜单就能找到),点击顶部的「操作」→「附加VHD」,选中刚才找到的ext4.vhdx,记得勾选「只读」选项(防止误写入)。
    • 用支持ext4文件系统的Windows恢复工具(比如DiskGenius、Recuva这类)扫描这个挂载的虚拟磁盘,找到你删除的myfoldername文件夹后恢复即可。
  3. WSL内用extundelete工具恢复
    如果你更习惯用Linux工具,也可以这样操作:

    • 按照上面的步骤把VHDX挂载为只读的虚拟磁盘。
    • 重新启动WSL,执行lsblk找到挂载的磁盘(一般是/dev/sdX格式)。
    • 把磁盘挂载为只读:
      sudo mkdir /mnt/recover
      sudo mount -o ro /dev/sdX /mnt/recover
      
    • 安装extundelete:
      sudo apt update && sudo apt install extundelete
      
    • 恢复指定文件夹:
      sudo extundelete /dev/sdX --restore-directory /home/myusername/myfoldername
      

    恢复的文件会出现在当前目录的RECOVERED_FILES文件夹里。


方法二:针对WSL1

WSL1的文件是直接存储在Windows文件系统里的,对应的路径一般是:

C:\Users\<你的Windows用户名>\AppData\Local\lxss\home\myusername\myfoldername

这种情况更简单:

  • 直接用Windows的恢复工具(比如Recuva、系统自带的「文件历史」如果开启过的话)扫描对应的磁盘分区,找到删除的文件夹恢复即可。

重要提醒

  • 所有恢复方法的成功率都取决于删除后是否有大量写入操作,如果删除后你还在WSL里运行过程序、创建过文件,那数据可能已经被覆盖,恢复概率会很低。
  • 如果平时有备份习惯(比如定期复制VHDX文件,或者开启Windows文件历史),优先用备份恢复,这是最稳妥的方式。

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

火山引擎 最新活动