Smb:sshfs 之外的另一种选择
Moevis
sshfs 用多了后感觉还是有一些局限性,比如它是建立在 ssh 协议之上的,一些环境并不方便用 ssh,并且它的延迟也比较高。于是我打算找一个更快更方便的协议来替换它,我马上想到可以给远程服务器建立一个 NFS 来提供给用户,这样我可以通过更通用的工具来访问它。
于是在 github 上我搜到 abobe 开发的一个 samba server,由于 samba 是一个很经典的网络文件系统协议,所以各个系统中都可以很方便地使用:https://github.com/adobe/node-smb-server
具体的安装方法是。
npm install node-smb-server
或者
git clone https://github.com/adobe/node-smb-server.git
cd node-smb-server
npm install
在 config.json 中有配置信息,其中的 shares 中可以配置多种文件系统的协议,我只用本地文件系统,所以只保留了 FS,并把 path 指向我需要的位置。
"shares": {
"FS": {
"backend": "fs",
"description": "fs-based test share",
"path": "./smbroot"
},
"JCR": {
"backend": "jcr",
"description": "AEM-based test share",
"host": "localhost",
"port": 4502,
"protocol": "http:",
"auth": {
"user": "<user>",
"pass": "<pwd>"
},
"path": "/",
"maxSockets": 64,
"contentCacheTTL": 30000,
"binCacheTTL": 600000
},
在 users 字段下可以配置登陆的用户名与密码,默认有 test/test
, admin/admin
, guest/<empty password>
,如果要修改密码,可以运行 node createhash.js <password>
来生成对应密码的 lmHash 和 ntlmHash:
...
"users" : {
"test" : {
"lmHash" : "01fc5a6be7bc6929aad3b435b51404ee",
"ntlmHash" : "0cb6948805f797bf2a82807973b89537"
},
"admin" : {
"lmHash" : "f0d412bd764ffe81aad3b435b51404ee",
"ntlmHash" : "209c6174da490caeb422f3fa5a7ae634"
},
"guest" : {
"lmHash" : "aad3b435b51404eeaad3b435b51404ee",
"ntlmHash" : "31d6cfe0d16ae931b73c59d7e0c089c0"
}
}
...
运行 smb 服务器方法是输入命令:
npm start
我在这个项目中目前只测试了 MacOS 中挂载 smb 服务器,finder -> Go -> Connect to Server
然后在 url 栏中填入 smb://<ip>:port/
,点击 connect 即可。
命令行中可以用 mount_smbfs //user:pass@SERVER/folder ./mntpoint
执行挂载,卸载的方式也很简单,umount ./mntpoint