OneKuma

OneKuma's Blog

One Lonely Kuma.
github
bilibili
twitter

Windows 上挂载 WebDAV

接着上文 折腾了一下阿里云盘 + AList + Rclone + AnimePaste 继续倒腾。

上文使用了 rclone 将 WebDAV 挂载到本地目录,而且必须在 Terminal 里手动运行一下脚本,并且 Terminal 还不能退出,所以我们现在要让他开机自动在后台启动。

更新 1:试用了一周后,体验不是很好,rclone 挂载的本地目录非常不稳定。时常出现卡死,且长时间未响应,不容易自动恢复;挂载点会因为关机不当,rclone 未正常终止等原因,导致无法被占用,无法重新挂载。搜了搜发现 Windows 原生就有相关的实现,例如 OneDrive 就在背后使用了 WebDAV。

更新 2:又试用了一段时间 Windows 原生提供的 WebDAV,依然不好用。问题有偶尔发生的开机自动挂载失败,需要手动点一下,估计原因是它挂载的时候 AList 仍未启动。其次,在挂载刚刚启动或者 AList 重启后,偶尔发生读取文件会失败一次。第三,用 VS Code 打开后,不知道为什么会给 AList 大量并发请求,容易发生各种奇怪的问题。第四,用 VS Code 编辑文本文件时,会发生缓存不一致的问题。最后,现在换用了 RaiDrive,目前似乎有观察到缓存不一致的问题,但可能 VS Code 有一部分锅,其它除了没充钱开机带了个广告外,没有问题,体验最佳。

方案一:RaiDrive#

官网:https://www.raidrive.com/

下载,安装,在 UI 上点一点,过程比较傻瓜。

方案二:Windows 原生提供的网络驱动器映射#

在文件资源管理器中,右键 此电脑,选择 映射网络驱动器...

image

选择你想要的驱动器,输入你的本地 / 远程 AList 的地址。

image

输入你的 AList 用户名,密码。

image

其它 WebDAV 同理。

可能出现问题#

  1. 可能需要在控制面板开一下 WebDAV,位于 控制面板 - 程序 - 启用或关闭 Windows 功能,选项路径如下图所示。

image

  1. 如果你局域网内的 WebDAV 是 HTTP 协议,不是 HTTPS 协议,会出现 “找不到网络名” 的错误。你需要打开 注册表编辑器,找到 HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\WebClient\\Parameters,修改键BasicAuthLevel 值为 2,即同时允许 HTTP 与 HTTPS。

方案三:rclone + nssm#

挂载脚本#

挂载脚本需要稍作修改:

  1. rclone 替换为绝对路径;
  2. 指定 --config 的路径(你可以通过 rclone config file 查看当前的配置文件路径);
  3. 挂载到一个单独的磁盘似乎比挂载到一个目录稳定一些?
# mount-anime.ps1

D:\bin\rclone mount "alist:/" "R:" `
  --config "C:\Users\<你的系统用户名>\AppData\Roaming\rclone\rclone.conf" `
  --header "Referer:https://www.aliyundrive.com/" `
  --vfs-cache-mode full --vfs-read-chunk-size-limit 1G --vfs-read-chunk-size 512M `
  --cache-dir "D:\.cache\rclone" --dir-cache-time 1m --buffer-size 128M `
  -o UserName="<你的系统用户名>" -o GroupName="Authenticated Users"

注意
后面的 nssm 在运行该脚本时,不是从你的当前用户启动的,所以没有 PATH 环境变量;
其次因为登录用户的缘故,mount 的目录权限有问题,命令中的最后一行参考 Mount Permission (Windows) 似乎能修复我自己遇到的权限问题。

nssm#

下载 nssm,它是一个 Windows 的 Non-Sucking Service Manager。

下载 nssm 2.24 解压后,把可执行文件复制到某个在 PATH 的目录下(这里我们统一用的是 D:\bin\)。然后输入以下命令打开 nssm 的复古 GUI,创建一个名为 mount-anime 的服务。

nssm install mount-anime

填入以下配置:

  • Application - Path:PowerShell 的绝对路径(比如 C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe);
  • Application - Startup directory:随意;
  • Application - Arguments上文创建的挂载启动脚本绝对路径
  • I/O:建议将 stdout / stderr 重定向到某个文件方便 DEBUG。

创建完成后,在管理员模式的 Terminal 下启动服务。

nssm start mount-anime
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。