彻底搞懂 WSL 存储目录:文件到底存在哪?双向访问、目录结构、避坑指南

21次阅读
没有评论

用 WSL 开发最容易懵的问题:我在 WSL 里写的代码、装的环境、存的文件,到底在 Windows 的哪个位置?

很多人分不清「WSL 内部目录」和「Windows 挂载目录」,导致出现丢文件、权限报错、C盘爆满、删文件不释放空间等各种问题。

今天一篇讲透 WSL2 完整存储目录体系:真实存储位置、双向访问路径、核心目录作用、新手绝对要避开的坑,搭配实操用法,看完再也不乱放文件!


一、前置核心结论(记住就不会乱)

1. WSL2 所有 Linux 原生文件,全部封装在一个 ext4.vhdx 虚拟磁盘中,不会零散暴露在 Windows 文件夹里;

2. WSL 有两套目录:Linux 原生目录(独占空间) + /mnt 挂载目录(直通 Windows)

3. 尽量不要在 Windows 资源管理器里直接手动修改 WSL 原生文件,极易权限错乱、文件损坏。


二、WSL2 文件真实物理存储位置(Windows 侧)

WSL2 和 WSL1 最大的区别:WSL2 是虚拟机架构,文件系统是独立的虚拟磁盘文件。

1. 默认物理路径(C盘)

所有 Ubuntu/Debian 等发行版的数据,默认都存在这里:

%localappdata%\Packages\对应发行版文件夹\LocalState\ext4.vhdx

以 Ubuntu 为例,完整默认路径:

C:\Users\你的用户名\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx

这个 ext4.vhdx 就是 WSL 的整个硬盘:代码、配置、Docker 镜像、缓存、日志全部塞在这里,也是之前讲到的「删文件不自动缩体积」的文件。

2. 关键特性

  • 这是一个动态虚拟磁盘,只会扩容、不会自动缩容
  • WSL 内部df -h 看到的空间,就是这个文件的内部空间
  • Windows 看到的文件大小,就是整体占用的硬盘空间

三、Windows 如何直观访问 WSL 文件?(推荐方式)

不用找复杂的 VHDX 文件,Windows 可直接通过网络路径可视化访问 WSL 目录,安全又方便。

操作方法

打开 Windows 资源管理器,地址栏输入:

\\wsl$\

即可看到所有已安装的 WSL 发行版,点开对应系统,就能直接浏览、复制、查看 WSL 内的所有文件,比如常用的用户目录:

\\wsl$\Ubuntu\home\你的Linux用户名

使用规范

  • 只读优先:适合查看、拷贝文件
  • 尽量不直接修改:Windows 编辑 Linux 权限文件,大概率触发权限异常、编译报错

四、WSL 内部目录结构(Linux 侧核心目录说明)

进入 WSL 终端后,日常开发只需要弄懂这几个核心目录,足够覆盖 99% 场景。

1. /home/用户名 —— 日常工作主目录

WSL 最安全、最推荐的工作目录,代码、项目、个人配置全部放这里。

特点:权限完整、读写稳定、不易出问题,是开发首选目录。

2. /root —— 超级管理员目录

root 用户的专属目录,普通用户无权限随意操作,存放系统级配置,不要在这里放项目代码

3. /mnt —— Windows 磁盘挂载目录(重点)

这是 WSL 打通 Windows 的核心目录,和上面所有目录完全不同

  • /mnt/c 对应 Windows C盘
  • /mnt/d 对应 Windows D盘
  • 所有操作直接作用于 Windows 原生文件

核心区别:

/mnt里删文件 → Windows 空间立刻释放

/home 里删文件 → 只释放 WSL 内部空间,Windows 不自动释放

4. /etc、/usr、/var 系统目录

  • /etc:系统配置目录(环境变量、镜像源、wsl.conf 等)
  • /usr软件安装、程序依赖目录
  • /var:日志、缓存、运行数据目录(容易悄悄涨空间)

五、WSL 开发目录最佳实践(避坑关键)

很多卡顿、报错、空间爆满,都是目录用错导致的,直接套用这套规范即可。

1. 项目代码、编译开发

推荐放在:WSL /home/用户名/ 下

优势:权限正常、IO 速度快、编译稳定,不会出现跨系统权限报错。

2. 需要和 Windows 互传的文件

使用 /mnt/c/Users/用户名/ 桌面/文档路径

适合临时传输文件、调用 Windows 本地资源,不适合长期存放项目。

3. 绝对禁止的操作

  • 不要在 Windows 中手动修改、剪切、替换 ext4.vhdx 文件
  • 不要在 Windows 里直接编辑 \\wsl$ 下的项目代码
  • 不要把 Docker 项目、编译工程放在 /mnt 目录(速度慢、权限乱)

六、Docker 在 WSL 的特殊存储位置

使用 WSL2+Docker Desktop 的小伙伴注意:

Docker 的镜像、容器、卷、构建缓存,全部存放在 WSL 的 VHDX 虚拟磁盘中,不会单独出现在 Windows 普通文件夹。

这也是为什么 Docker 用久了 VHDX 暴涨、C盘变红的核心原因,清理必须两步走:

  1. WSL 内执行 docker system prune -a 清理无用镜像缓存
  2. Windows 端用 diskpart 压缩 VHDX 释放空间

七、快速自查:你的文件存在哪?

WSL 终端执行,一秒判断目录类型:

pwd
  • 路径以 /home/root/etc 开头 → 存在 VHDX 虚拟磁盘
  • 路径以 /mnt/c/mnt/d 开头 → 存在 Windows 真实硬盘

八、全文总结

1. WSL2 核心存储是 ext4.vhdx 虚拟磁盘,默认占用 C盘,所有 Linux 原生文件都封装在内;

2. Windows 访问 WSL 文件优先用 \\wsl$ 路径,安全便捷,禁止直接篡改 VHDX 文件;

3. /mnt 目录直通 Windows,文件操作实时生效、空间即时释放;原生目录则需要手动压缩回收空间;

4. 开发代码放 /home,文件互传用 /mnt,杜绝跨系统编辑,可规避 90% 的 WSL 报错与空间问题。

搞懂这套存储逻辑,WSL 开发环境会变得无比稳定,再也不用莫名其妙踩坑!✨

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 0
评论(没有评论)
验证码