一、前言:为什么文件互传总翻车?
在 WSL2 里使用 cp /mnt/c/Users/xxx/file.txt ~/ 拷贝文件,结果中文乱码?Windows 侧把项目拖到 \\wsl$\ 里,Git 却疯狂提示 mode change 100644 → 100755?如果你也被这些问题折磨过,这篇教程一次性讲透 WSL2 的文件系统原理,并给出 6 种高频场景的实操方案。
二、先搞清楚:WSL2 的'三张面孔'
| 路径 | 本质 | 速度 | 适用场景 |
|---|---|---|---|
/mnt/c/ | Windows 盘符挂载 | 慢(跨文件系统) | 临时读写 Windows 文件 |
\\wsl$\Ubuntu\ | 9P 网络协议 | 中等 | Windows 资源管理器直接访问 Linux |
~/(ext4.vhdx) | 原生 ext4 虚拟磁盘 | 快! | Linux 重度开发(推荐) |
⚠️ 注意:
/mnt/c/默认挂载参数不支持chmod和大小写敏感,不要直接把 Git 仓库放这。\\wsl$\路径在 Windows 程序中可能被识别为网络驱动器,某些 IDE(如 CLion)会卡顿。
三、6 种高频文件操作场景(附命令)
场景 1:Windows → Linux 传大文件(>1GB)
按 Win+R 键打开运行窗口,输入:
\\wsl$

方案:直接拖进 ext4.vhdx
- 在资源管理器地址栏输入
\\wsl$\Ubuntu\home\你的用户名\ - 把 Windows 的
dataset.zip拖进来(速度≈磁盘写入极限)。 - 避坑:完成后在 WSL2 执行
sudo chown $USER:$USER ~/dataset.zip,否则可能无权限。
场景 2:Linux → Windows 导出日志
方案:用 cp 到 /mnt/c/,但注意编码
生成带中文的日志:
python train.py > /mnt/c/Users/你的 Win 用户名/Desktop/train.log 2>&1
如果 Windows 打开是乱码,用 iconv 转码:
iconv -f UTF-8 -t GBK ~/train.log -o /mnt/c/Users/xxx/Desktop/train_gbk.log



