由于开始摄影,不得不考虑数据备份问题。照片文件是若干10~50M的小文件,且生产出来之后基本只需要冷备份,所以也不怎么需要版本管理之类的功能。目前文档都用15G空间的免费OneDrive同步,体验虽说不佳但也还能用,主要是很喜欢“不需要离开文件资源管理器就能备份”的操作。所以我对于照片备份的想法是,不需要定时备份,只要每次导入照片之后直接一拖上传到备份盘就足矣。

本着这个思路,一开始考虑的是组NAS一类自建服务。不过由于肉眼可见的逐渐折腾不动,以及居住空间的不安定性指经常搬家,最终决定返璞归真,每年花150买百度网盘SVIP,然后挂载本地。至于为什么买百度,也只能说这是国内网盘的最优解了怎么,你不服气吗?

首先使用的是alist+raiDrive的方案,但出现了取回文件提示没权限的问题。加上新版本的raiDrive有弹窗,遂弃。随后换成了闭源的CloudDrive2,一切都很好,但是取回文件到最后一部一定卡住。AirLiveDrive等也试过了,都有问题。最终用了alist+rclone的方案。

大部分内容参考了这个帖子,但过程中也是踩了几个坑。

配置alist开启WebDAV

参考alist v3的文档,挂载百度网盘即可。里面针对各种策略做了详细的解释。因为我是SVIP且希望尽量稳定,所以选择官方接口,WebDAV策略302重定向。需要注意的是,这里的挂载路径可以随意填写,作为挂载之后的根路径。如这里写的是“百度网盘”。

alt text

配置rclone

rclone依赖WinFsp,可以事先安装。

在rclone.exe所在路径下打开命令行,执行指令rclone.exe config。注意可能要使用./rclone.exe config的语法,注意命令行的提示。当然,也可以直接注册rclone为环境变量。前面的alist同理。

配置New remote->输入自定义的名称(如baidu)->选择WebDAV->输入地址http://127.0.0.1:5244/dav/百度网盘/->选择Other site/service or software->输入用户名(即AList配置的用户名)->输入密码(AList配置的密码)->回车跳过Option bearer_token配置->Edit advanced config?选择No->选择y保存配置->配置完成。

运行指令rclone.exe lsd baidu:,如果能正确输出目录则配置成功。

需要注意的是,rclone.exe lsd命令后跟的是rclone中配置的remote名称,而不是alist中的网盘挂载路径(尽管两者可以相同,你也可以将remote取名为“百度网盘”)。

配置nssm实现开机自动挂载

nssm可以将exe注册为系统服务。将alist.exe和rclone.exe注册为系统服务后,可以实现优雅的开机自动挂载。当然也可以用脚本实现。

下载nssm后,在win64路径下大家应该都是64位系统了吧运行命令nssm.exe install alist打开nssm GUI。这里依然可以参考这个帖子。记得在I/O选项卡填log路径,对排障很有用。

接着nssm.exe install rclone注册rclone。值得注意的是这里的Arguments,我填写的是:

mount baidu:/ W: --cache-dir D:/Cache/ --vfs-cache-mode full --vfs-cache-max-size 10G --vfs-disk-space-total-size 12T --header "Referer:https://pan.baidu.com/" --header "User-Agent:pan.baidu.com" --config="C:\Users\<用户名>\AppData\Roaming\rclone\rclone.conf"

这里baidu:是rclone中remote的名称;W:是拟挂载为的盘符;D:/Cache/是缓存路径(建议指定在系统盘之外速度较快的SSD上);10G是VFS缓存大小,可以自己指定(关于VFS缓存机制可参见这篇文章);12T是我的网盘总大小,可以自己根据情况指定;headerUser-Agent参数是因为百度网盘的策略,对20M以上文件的请求必须由这个请求头发起;config是为了指定rclone配置文件所在位置。一开始不带这个参数,遇到了问题,查看log发现了如下的信息:

2024/12/23 21:54:30 NOTICE: Config file "C:\\Windows\\system32\\config\\systemprofile\\AppData\\Roaming\\rclone\\rclone.conf" not found - using defaults
2024/12/23 21:54:30 CRITICAL: Failed to create file system for "baidu:/": didn't find section in config file

问题原因是被注册为system服务后,rclone会去system路径下找配置文件,然而没有权限。这似乎是因为我在使用nssm之前手动运行了mount命令,配置文件被放在了用户路径下。加了config参数指定之后就正常了。

之后记得在Dependencies选项卡将前面注册的alist作为依赖。

完成后,应该就可以在系统服务管理界面看到这两个服务,可以暂停或设置自动启动。系统启动后会自动挂载。唯一的问题是不能显示已用空间,不过空间不吃紧的情况下问题不大。

alt text

转载请注明出处