2021-12-03-阿里云盘通过webdav+raidrive挂载为本地网络硬盘
一、 问题缘起
1. 需求目的
据说可以阿里云盘开放了webdav接口,可以使用webdav访问,看到网上和一些群里有相关内容。于是,开始尝试搞一下。
据说webdav在很多终端都可使用。想尝试一下,如果成了,可以解决很多整理+同步资料麻烦的问题。
我在windows上用,相关项目主要是这个:https://github.com/zxbu/webdav-aliyundriver/
另外一个有关项目,看起来想是路由器上或者NAS上用的,暂时无关: https://github.com/messense/aliyundrive-webdav
2. 大概实现方法
项目里可以看到,两种方式,
一种是用java执行jar包,之后就可以从本地的localhost:8080访问网盘,再使用raidrive工具将其挂载成本地硬盘的形式;
第二种使用docker,加上安装docker的部分,免去安装java的部分,同样实现可以从本地localhost:8080访问网盘,再使用raidrive工具挂载成本地硬盘形式。
所以分成两步:
- 用docker或者powershell执行jar包实现webdav,使阿里云盘的内容可以从本地的http端口访问。
- 使用raidrive、cloudrive、rclone等工具,将其变为本地硬盘形式使用。
第一步结果后可以在浏览器访问
第二步后,可以在以本地硬盘形式使用,这里是以raidrive挂载的结果
3 对挂载工具的讨论
主页上推荐的工具是raidrive。
据我看各处的信息了解,对各个工具有以下评价:
- raidrive缩略图问题没有解决,每次都要重新缓存缩略图,其他都好。
- cloudrive不开源,偷偷跑上传,cpu莫名其妙上去,让人感到有点不安。cloudrive挂载完显示在“设备与驱动器”中,与raidrive显示在“网络位置”中不同。
- rclone速度成问题,别人评价“只有--vfs-cache-mode full 速度还行,其他都比raidrive慢不少”。
二、 方法1:使用powershell执行jar包
1. 下载jar包。
到这个项目里下载jar包:https://github.com/zxbu/webdav-aliyundriver/
2. 按照步骤拿到refresh_token。
refresh_token特点:测试了一下,重新登录后或者长期未使用后在浏览器上刷新,refresh_token会变;然而,不影响之前拿到的token,之前的可以继续用。
3. 把jar包改名成webdav.jar,然后放到某个目录下。
4. 用powershell进到这个目录里,执行:java -jar webdav.jar --aliyundrive.refresh-token="your refreshToken"。注意替换refresh_token为自己拿到的token。
5. 如果4成功,可以用浏览器确定一下,访问一下:http://localhost:8080;输入账号admin,密码admin查看(如果自己没改的话,账号密码默认admin)。
到这里,就完成了阿里云盘通过webdav映射到本地http端口上。
如果想要实现开机自启动的话,可以写成bat脚本文件,可以参考这里的实现:https://blog.csdn.net/Hesye/article/details/120256825
最后附上代码:
%1 mshta vbscript:CreateObject("WScript.Shell").Run("%~s0 ::",0,FALSE)(window.close)&&exit
cd D:\2021-12-01-aliyunpan
java -jar .\webdav-aliyundriver-2.4.2.jar --aliyundrive.refresh-token="(your refresh-token)" --server.port="8080" --aliyundrive.auth.enable=true --aliyundrive.auth.user-name="admin(your name)" --aliyundrive.auth.password="admin(your password)"
三、 方法2:docker实现
**1. 按这篇文章这个下载安装docker,先开启hyper-V,再下载,如果开不了hyper-V,则用方法1。http://c.biancheng.net/view/3121.html **
**2. 如果1中出现一个wsl问题,按这个解决: https://docs.microsoft.com/zh-cn/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package **
即下载一个更新包,安装后再在powershell中执行:wsl --set-default-version 2
3. 如果不想把镜像放到C盘占空间,再按这两个之一改一下
https://blog.csdn.net/fleaxin/article/details/109812090
https://zhuanlan.zhihu.com/p/381115119
到这docker就搞定了。
4. 之后挂载阿里云,参考这个项目https://github.com/zxbu/webdav-aliyundriver/。
即在powershell里执行:
docker run -d --name=webdav-aliyundriver --restart=always -p 8080:8080 -v /etc/localtime:/etc/localtime -v /etc/aliyun-driver/:/etc/aliyun-driver/ -e TZ="Asia/Shanghai" -e ALIYUNDRIVE_REFRESH_TOKEN="your refreshToken" -e ALIYUNDRIVE_AUTH_PASSWORD="admin" -e JAVA_OPTS="-Xmx1g" zx5253/webdav-aliyundriver
注意修改refresh_token为登录后获取的refresh_token。
完成这步,就可以在浏览器localhost:8080访问了。
四、 第二步:raidrive挂载本地
先按2、3中方法之一,使用webdav协议将阿里云盘映射到本地后,再使用raidrive将之变成本地硬盘形式使用。
如图是需要注意的地方,账号密码填写之前设置的,若未修改则都为admin。