最高效的方式是结合原生挂载与网络路径直连:windows通过wsl$拖放或wsl cp向wsl2传文件,wsl2通过/mnt/c等挂载点用cp/mv向windows传文件;高频同步可用软链接,大文件跨实例传输推荐rsync+ssh。
最高效的方式是结合原生挂载与网络路径直连,不装额外工具、不配ssh、不改网络模式,日常操作基本够用。
从 Windows 往 WSL2 传文件:直接拖放或命令行复制
Windows 资源管理器地址栏输入 \wsl$,回车后选择你的发行版(如 Ubuntu),就能看到整个 Linux 文件系统。把文件拖进去,自动存到对应用户的 home 目录下,权限和编码通常没问题。如果习惯命令行,也可以在 PowerShell 或 CMD 中运行:
- wsl cp "C:path oile.txt" "/home/username/" —— 把 Windows 文件复制进 WSL
- wsl mv "C:path oscript.sh" "/tmp/" —— 移动文件,适合清理临时文件
注意:不要直接往 \wsl$Ubuntuetc 这类系统目录拖文件,容易因权限或格式问题导致 WSL 启动异常。
从 WSL2 往 Windows 传文件:用 /mnt/ 挂载点最稳
WSL2 自动把 Windows 各盘符挂载在 /mnt/c、/mnt/d 等路径下。在 WSL 终端里,直接用 cp 或 mv 就能写入:
- cp ~/project/output.log /mnt/c/Users/YourName/Desktop/
- cp -r ~/data/ /mnt/d/backup/ —— 支持递归复制整个文件夹
这个方式速度快、无延迟,适合批量传输日志、构建产物或数据集。但要注意:/mnt/ 下的文件所有权属于 Windows 用户,chmod 不生效,所以别在 /mnt/ 里直接编辑配置文件再挪回 WSL 主目录——先复制进 ~,改完再复制回去。
高频同步场景:软链接 + 自动化脚本
如果你经常在两个系统间来回改同一组文件(比如前端项目、配置模板),推荐在 WSL 里建个软链接指向 Windows 的共享目录:
- Windows 先建好文件夹,比如 D:dev-shared
- WSL 中执行:ln -s /mnt/d/dev-shared ~/shared
- 之后所有 cd ~/shared 的操作,实时反映在 Windows 侧
配合简单脚本还能自动同步关键文件。例如每天凌晨把 WSL 里的 ~/.bashrc 备份到 Windows:
#!/bin/bashcp ~/.bashrc /mnt/c/Users/YourName/backup/
大文件或跨实例传输:rsync + SSH(进阶但值得学)
当你要在两个 WSL2 实例之间传几十 GB 的数据(比如训练数据集),或者需要增量、断点续传、保留权限时,rsync over SSH 是最优解:
- 确保两个实例都装了 openssh-server 并启动服务
- 查各自 IP:ip addr show eth0 | grep inet,记下类似 172.28.x.x 的地址
- 从 A 实例推文件到 B:rsync -avz --progress ~/data/ user@172.28.x.x:/home/user/
它只传变化部分,重试也不重复拷贝,比反复拖拽或 scp 更可靠。不过日常单机开发中,用不到这么重的方案。











