技术解析

关于 Linux 和 Windows 的 nfs 挂载
0
2021-06-18 18:41:06
idczone

业务需求需要挂载 linux 文件到 window 上, 查看相关文章后发现可用进行 nfs 挂载: https://blog.51cto.com/ixdba/920290

但在我在命令行中执行挂载命令之后,并未出现 “网络位置”下的挂载盘符,实际手动设置“映射网络启动器”之后才会在“网络位置”下出现相应的挂载目录。

但是我的操作是希望行云流水般自动化操作,开机-ssh 连接-命令行挂载目录,现在变成了:开机-ssh 连接-命令行挂载目录-手动映射网络启动器,

请教各位懂 windows 的大佬,能否 1、在命令行执行 mount 之后直接显示相应的挂载数据 2、有无方法通过脚本、命令的形式设置“映射网络启动器”

多谢各位


嗯? mount 不是直接出盘符的吗。

因为出不了,所以我才疑问

我理解的是你在 linux 上面做了 nfs,然后在 windows 上面挂载这个 nfs
如果我理解的没问题的话,那么直接 windows 下写个 bat 文件:
net use z: \\[ip]:\[pwd] [password] /user:[user]
然后把这个文件的快捷方式丢到启动文件夹里面不就行了

理解是没错,但是有个要求是:这些挂载目录都是动态的,我目前是等待 linux 启动后,用 ssh 连接 window ,执行动态的目录挂载

samba 不能用吗

我尝试了您的方式,以 ssh 远程连接 windows,在其命令行输入 net use U: \\192.168.3.111\mnt\disk2\project\user1 且显示 The command completed successfully. 然后进入 powershell 能进入 U 盘符,ls 查看也能看到相应的文件,但是在 windows 界面上依然看不大 U 盘符

动态的意思是 linux 需要重启,重启之后要挂载的目录路径会变吗?

samba 尝试过,但是我的需要是:windows 其实是虚拟机,每次起来之后需要按登陆的用户,挂载或者共享他对应的自己的文件夹,在我理解(初步看了下 samba 的 demo 设置) samba 是多人共享一个文件夹比较适合。或者请教下能否对 samba 设置:一台 windows 一个文件夹访问方式,如果可以的话,我在 windows 虚拟机起来后手动更新 samba 配置也是可以的

是按不同的用户起 windows 虚拟机,在 windows 虚拟机下挂载对应用户的个人文件

我没试过 ssh 到 windows 之后进行命令行操作,你先试试直接在 windows 的 cmd 里面执行这条命令,如果成功应该是会显示盘符的。

上一个回复 “我目前是等待 linux 启动后” 错了,是“我目前是等待 windows 启动后”

我试了下也么有出盘符,这个“自动加载盘符”这个操作是否在 windows 下需要设置下? 我没怎么接触过 window 下的开发,所以不太懂

如果 bat 执行后能看到盘符(以我平时的经历来看是肯定可以的),那么试试看能不能把流程变成:开机-ssh 连接-上传 bat 文件到 windows-本地或远程执行 bat 文件

呃...这个问题我真没碰到过

其实如果能显示盘符,流程啥的都好办,烦就烦在他不显示,我的系统镜像是 Win10_1909_Chinese(Simplified)_x64.iso ,安装的时候选择的是专业版,但是未激活

你检查一下语法,或者修改一下盘符,命令正常的话理论上是直接在我的电脑下面出现盘符的...网上查了一下也没有和你这种同样的情况,不在现场确实是没什么别的思路了

激活试试,未激活有部分功能受限,我没在未激活的机器上测试过,有可能有联系

多谢,我再研究下

其实命令成功之后,进入 powershell 能进到 U 盘,ls 也能看到对应挂载下的文件,说明命令是正确的

samba 支持独立配置文件,如:config file = /etc/samba/win.%U.conf,这是按用户名来分的
独立配置里就可以写用户的文件夹了

这个有了解过,但是我们的业务逻辑是,不同账号登陆我们平台,根据一个镜像启动多个 Windows 虚拟机,起来后这些 windows 的用户名都是相同的,唯一不同的就是 ip 地址,然后对这些 windows 挂载相应的文件

NFS 挂载不能用管理员模式启动的 CMD,只能用普通权限的 CMD,否则不会出现盘符。

config file = /etc/samba/win.%I.conf,按 IP 区分
samba 变量:
%S = 当前服务名(如果有的话)
%P = 当前服务的根目录(如果有的话)
%u = 当前服务的用户名(如果有的话)
%g = 当前用户说在的主工作组
%U = 当前对话的用户名
%G = 当前对话的用户的主工作组
%H = 当前服务的用户的 Home 目录
%v = Samba 服务的版本号。
%h = 运行 Samba 服务机器的主机名
%m = 客户机的 NETBIOS 名称
%L = 服务器的 NETBIOS 名称
%M = 客户机的主机名
%N = NIS 服务器名
%p = NIS 服务的 Home 目录
%R = 说采用的协议等级(值可以是 CORE, COREPLUS, LANMAN1, LANMAN2,NT1)
%d = 当前服务进程的 ID
%a = 客户机的结构(只能识别几项:Samba,WfWg,WinNT,Win95 )
%I = 客户机的 IP
%T = 当前日期和时间

尝试过

多谢,尝试下

换个 server 版本的 windows

这个不太行...用户是一般的小白用户

我猜你挂载用的身份和你查看用的身份不同。
挂载盘符是用户隔离的,意味着 A 用户挂载的网盘 B 用户是看不到的。同理管理员窗口下挂载的网盘,非提权环境也是看不到的。你看看 ssh 连上来以后是不是进入提权环境了?

这个考虑过,但是在 window 虚拟机(win10 企业版)中用管理员身份运行挂载也看不到盘符,而且用公司物理主机( win10 专业般)挂载也看不到盘符,明天试试 win7

Linux 上创建 FTP 服务,windows 去访问

bat 里面的%username%了解一下? Linux 下的目录名做到跟 win 登录账号用户名一致就行

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服