嵌入式杂谈工具篇,说是工具不如说是一种服务,我个人喜欢将工具划分为两类,一类是大家可以看到图形界面的,点来点去,站着就把任务干完了。另一种就是使用命令行或者在背地里默默运行的软件服务,无声无息间也给我们带来了巨大的便利,这次介绍的就是一位配置好之后就背地里默默工作的一种软件服务,实现的目标就是Windows与Linux下的文件共享。至于它有没有用,大家可以看到最后再重新评价。

提出需求
  • 如果我们现在两个Windows主机之间实现文件共享,可以使用windows自带的网络邻居功能。
  • 如果我们想在两个Linux主机之间实现文件共享可以使用NFS(网络文件系统)这个服务。
  • 那么如果想在Linux主机与Windows主机之间共享文件,自然就引出了Samba服务。
使用之后的效果

使用鼠标复制粘贴完成文件传输 相当于Ubuntu作为一个

U盘接入到了我们的主机


samba服务产生历史

而windows与Linux是通过Samba协议进行目录共享,也是参考了网上邻居的功能

微软的网上邻居通过一种SMB协议(Server Message Block)(服务消息块)来实现文件共享。但是微软不公布这个协议,所以Linux社区组织了一个SAMBA工程,也就是在SMBSB字母后面分别加入一个字母A,通过抓取网上邻居的数据包反向推导出数据协议,所以SAMBA工程后来也慢慢变成一种服务,称为SAMBA服务。简单来说就是Linux主机在运行Samba服务的时候相当于一台假Windows来完成与Windows的通信

samba服务器安装
# 开启一个服务基本就是安装,配置,重启
# 安装
apt-get install samba
samba服务器配置



samba共享目录没有权限 samba添加共享目录_centos samba 看不到共享目录

# 配置文件目录,这里就可以看到是smb字母,也可以验证samba是由smb演进过来的
/etc/samba/smb.conf
# 配置内容,包括共享哪个目录以及目录的访问权限(读写权限)
# 具体参考下图
# 方括号为基本格式,里面填写我们随便的一个名称,表示Windows看到的文件夹名称
# comment相当于注释,也可以随便填写
# path 表示要共享的路径
# 其他为权限设置,请自行百度
samba服务器添加用户以及设置密码



samba共享目录没有权限 samba添加共享目录_samba共享服务_02

# samba有一个登录用户的概念,就像Ubuntu有一个用户名与密码
# 为了防止在Ubuntu进行操作的时候,不能随便进入与Windows共享的目录
# 相当于samba单独会有一个密码,用户名可以共用
# 使用如下命令进行samba密码设置 -a表示增加用户
# 接下来会提示输入两次密码,如下图
sudo smbpasswd -a 用户名
重启samba服务器使生效



samba共享目录没有权限 samba添加共享目录_samba安装_03

# 重启samba服务
# 下面也可以看到d表示服务,而samba来源于smb,所以是如下名称
sudo /etc/init.d/smbd restart
# sabma有两个服务,重启另一个
sudo /etc/init.d/nmbd restart
客户端与服务器端

windows作为客户端来访问Linux主机 Linux作为主机共享自己的指定目录

客户端访问服务器的方法

Windows下 win+r打开运行框

samba共享目录没有权限 samba添加共享目录_samba共享目录没有权限_04

输入两个\\ip地址进行访问,网上邻居也是这种方法 点击对应目录,弹出输入用户名与密码,用户名为Ubuntu用户名,密码为我们之前针对samba设置的密码 

samba共享目录没有权限 samba添加共享目录_samba共享服务_05

之后就可以在两边修改文件实现文件共享 接下来将这个网络文件夹添加一个盘符快捷方式,使得我们可以像访问主机的C盘 D盘一样来访问我们的Ubuntu共享文件夹 连接成功以后直接文件夹右键---->映射网络驱动器

samba共享目录没有权限 samba添加共享目录_centos samba 看不到共享目录_06

完成之后效果图,相当于使用samba服务将网络上的一个文件夹作为一个U盘进行使用

samba共享目录没有权限 samba添加共享目录_samba共享目录没有权限_07

和上面类似的操作是在vmware中设置文件共享,这样也可以把Windows下的一个文件夹映射到我们的Ubuntu(需要安装vmtools)两种方法都可以,请自行体验如果有时间另一种办法也可以写一篇文章来介绍

总结

使用samba服务器的好处就是可以将Linux下的目录共享到Windows下,这样打开Linux下的文件就相当于Windows本地打开文件一样。

之前我也试过好几种在windows上编写代码,然后再Linux上进行编译的尝试,总体来说vscode的remote-ssh功能还是相当稳定的,但是这并不妨碍我们再开阔一种眼界,只要在学习,就一直在进步,不是嘛(

)。

这样就可以解决我们的虚拟机使用vscode查看代码不方便的问题,从某种程度上来说,也可以算作为vscode的remote-ssh的替代方案。