目录
场景1:Windows → Linux 传大文件(>1GB)
场景3:Windows 代码在 Linux 编译(路径问题)
场景4:同步 Windows 和 Linux 的配置文件(软链接)
场景5:用 Windows 的 GUI 编辑器改 Linux 代码(VSCode)
标签:#WSL2 #文件共享 #跨系统开发 #避坑
一、前言:为什么文件互传总翻车?
在 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
场景3:Windows 代码在 Linux 编译(路径问题)
错误示范:
cd /mnt/c/Users/xxx/project make # 报错:No rule to make target '/mnt/c/.../file.c'
正确姿势:
# 把项目搬到 ext4 分区 cp -r /mnt/c/Users/xxx/project ~/project_wsl cd ~/project_wsl && make -j$(nproc)
场景4:同步 Windows 和 Linux 的配置文件(软链接)
# 把 Linux 的 .vimrc 同步到 Windows 的 OneDrive ln -sf /mnt/c/Users/xxx/OneDrive/config/.vimrc ~/.vimrc
场景5:用 Windows 的 GUI 编辑器改 Linux 代码(VSCode)
-
在 WSL2 安装 VSCode Server:
code .(首次会自动安装) -
在 Windows 侧安装 Remote-WSL 插件,直接通过
\\wsl$\打开工程。 避坑:如果 Git 提示文件权限变化,在 VSCode 设置中关闭files.eol的自动转换。
场景6:Docker 容器访问 Windows 文件
# 把 Windows 的 D:\data 挂到 Linux 的 /mnt/data sudo mkdir /mnt/data sudo mount -t drvfs D: /mnt/data # 运行容器 docker run -v /mnt/data:/workspace nvidia/cuda:11.8-base
四、终极技巧:自动挂载优化
编辑 /etc/wsl.conf(没有就新建):
[automount] enabled = true options = "metadata,umask=22,fmask=11" # metadata 支持 Linux 权限,umask/fmask 解决可执行文件问题
改完重启 WSL2:
wsl --shutdown
五、性能对比实测
| 操作 | 路径 | 耗时(拷贝 1GB 文件) |
|---|---|---|
| Windows→Linux | \\wsl$\ | 8.2 秒 |
| Windows→Linux | /mnt/c/ | 32 秒 |
| Linux→Windows | /mnt/c/ | 7.8 秒(反向更快,原因未知) |
六、总结:一张图选对路径
🚩 结论:
长期项目 → 放
~/(ext4.vhdx)临时交换 → 用
/mnt/c/Windows 程序编辑 → 用
\\wsl$\
评论区提问:你在 WSL2 文件操作中踩过哪些坑?欢迎分享!
标签:#WSL2 #文件共享 #跨系统开发 #避坑
9133

被折叠的 条评论
为什么被折叠?



