在开发的过程中会频繁的在 Windows 和 Ubuntu 下进行文件传输,比如在 Windwos 下进行代码编写,然后将编写好的代码拿到 Ubuntu 下进行编译。Windows 和 Ubuntu 下的文件互传我们需要使用 FTP 服务,设置方法如下:
打开WSL的终端窗口,然后执行如下命令来安装 FTP 服务:
sudo apt-get install vsftpd
等待软件自动安装,安装完成以后使用 VI 命令打开/etc/vsftpd.conf,命令如下:
sudo vi /etc/vsftpd.conf
打开 vsftpd.conf 文件以后找到如下两行:
local_enable=YES write_enable=YES
确保上面两行前面没有“#”,有的话就取消掉,完成以后如下所示:
同时我们在WSL中也进行相同操作
修改完 vsftpd.conf 以后保存退出,使用如下命令重启 FTP 服务:
sudo /etc/init.d/vsftpd restart
Ubuntu中就不截图了,下面是WSL中的操作
Windows 下 FTP 客户端我们使用 FileZilla,这是个免费的 FTP 客户端软件,可以在 FileZilla官网下载,下载地址如下:https://www.filezilla.cn/download,下载界面如图
下载安装后打开 FileZilla 软件,界面如图
Ubuntu 作为 FTP 服务器,FileZilla 作为 FTP 客户端,客户端肯定要连接到服务器上,打开站点管理器,点击:文件->站点管理器,打开以后如图
点击图中的“新站点(N)”按钮来创建站点,新建站点以后就会在“我的站点”下出现新建的这个站点,站点的名称可以自行修改,比如我将新的站点命名为“Ubuntu”如图
因为操作比较简单,后面就不自己截图了。选中新创建的“Ubuntu”站点,然后对站点的“常规”进行设置,设置如图
连接成功以后如图
连接成功以后如上图所示,其中左边就是 Windows 文件目录,右边是 Ubuntu 文件目录,默认进入用户根目录下。但是注意观察在上图中Ubuntu 文件目录下的中文目录都是乱码的,这是因为编码方式没有选对,先断开连接,点击:服务器(S)->断开连接,然后打开站点管理器,选中要设置的站点“Ubuntu”,选择“字符集”,设置如图
按照上图设置好字符集以后重新连接到 FTP 服务器上,重新链接到 FTP 服务器以后Ubuntu下的文件目录中文显示就正常了,如图
按照图中设置好以后,点击“连接”按钮,第一次连接可能会弹出提示是否保存密码的对话框,点击确定即可。点击连接后报错:无法连接服务器,ftp和sftp都不行
WSL安装开启SSH服务
ftp和sftp还是不行
一度怀疑WSL的IP有问题,按照此篇:WSL2设置固定ip
修改IP还是不行
最后放弃了,具体原因未知,转换为下面的思路。
wsl访问win10
这个比较简单,wsl已经默认将所有分区挂载在/mnt下,例如
/mnt/c/Users/xxx /mnt/d/data
可以看到Windows下的C盘文件
win10访问wsl
隐藏的比较深,路径中的随机数可能因人而异,例如Linux下的/对应路径
C:\Users\xxx\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs
其实这个类似的路径在这篇中提到过:WSL中的远程开发
注意
由于Windows和Linux的文件系统差异(如不支持软链接),不要在win10下手动修改wsl的文件,可能引发未知错误。