windows中挂载远程目录

Table of Contents

主要就是依赖于winfsp(Windows File System Proxy),它是一种类似于 Linux 上的 FUSE(Filesystem in Userspace)机制,macOS也有类似的macFUSE,这种可以在用户态实现文件系统功能而不用深入内核。像是sshfs-win 和 rclone 这样的工具都依赖于 winfsp 来实现文件系统挂载和操作。

以sshfs这样用sftp ssh挂载远程服务器目录为例子:

启动ssh-agent

先在本机启动一个ssh-agent服务,然后ssh-add载入密钥,主要是为了挂载的时候不用填写用户名和密码,方便ssh连接且更安全。

sudo pwsh
Get-Service ssh-agent
Set-Service ssh-agent -StartupType Manual
Start-Service ssh-agent
Set-Service ssh-agent -StartupType Automatic

ssh-add  ~/.ssh/[rsa key]

sshfs-win

可以通过winget 来安装sshfs-win,安装好后的目录地址在C:\Program Files\SSHFS-Win\ 中,bin目录下有sshfs.exe sshfs-win.exe这两个二进制工具。

winget install SSHFS-Win.SSHFS-Win

sshfs-win.exe已经帮我映射了UNC地址,不需要直接使用exe,只要用net命令,通过UNC路径来挂载到网络驱动器上就可以了。

# 挂载
net use X: \\sshfs\[user name]@[host name]

# 查看
net use

# 卸载
net use X: /delete

rclone

sshfs-win这种通过UNC路径来映射到网络驱动器上的方式个人不是很喜欢,我更喜欢linux的那种挂载到目录的风格,所以rclone这种将云端存储映射到本地路径的工具更符合我的口味。

rclone的使用先要rclone config设置好配置文件,通过config的交互式选项设置好sftp协议的配置。我是通过scoop装的rclone,配置路径地址就是~\scoop\apps\rclone\current\rclone.conf路径。有了配置之后,就可以通过mount挂载的方式,像linux一样指定路径进行挂载了。

rclone mount gen10: C:\Users\[user]\[dir]
rclone mount gen10:[dir1] C:\Users\[user]\[dir]
rclone mount gen10:[dir1]/[dir2] C:\Users\[user]\[dir]

# 目标目录也可以使用相对路径
rclone mount gen10:[dir1]/[dir2] ./[dir]

想要长期像服务一样运行,也可以通过后台进程的方式。

# cmd
start /B rclone mount remote:path/to/files X: --vfs-cache-mode writes

# pwsh
Start-Process rclone -ArgumentList "mount remote:path/to/files X: --vfs-cache-mode writes" -NoNewWindow