1. 介绍展开目录
所需成本:一点小钱、时间、精力、英语单词 / 或一台系统最低版本为安卓 7 的手机
WebDAV 可以直接通过储存空间备份数据、传输文件,注意浏览器本身并不支持 WebDAV 协议,除非相关项目专门适配 WebDAV 的前端,否则浏览器无法打开 WebDAV 链接。众多网盘为何大多不支持 WebDAV 功能?其实主要的还是会造成客户端、网页端等官方工具的使用率大幅下降,这显然不适合它们的商业运作方式。就连支持 WebDAV 的坚果云也主要靠卖传输流量为主,好在阿里云盘相对开放一些,开放 api 支持对接一些第三方工具。我接下来介绍的的第三方 WebDAV 项目,用来对接阿里云盘实现 WebDAV 功能,我会尽可能一步一步的详细描述从而降低门槛。
所以主要考虑购买适合的 VPS(云服务器),应当仔细考虑 VPS 的配置,对使用体验影响非常大,我的购买原则就是价格和性能互相平衡使劲往下压,顶级拉扯。这些项目用来搬运大批量资源都是消耗机器本身的流量,所以就需要大宽带大流量,最好无限流量,若非富豪就不必考虑国内那几家了。国内宽带流量月租十分昂贵,而国外 VPS 宽带月租则是白菜价,但是响应速度又是个问题。阿里云盘数据储存于国内,国外地理位置越远则访问和下载速度越慢,这就跟访问外网一样。如果你对购买国外 VPS 深有经验,那么就请直接跳到第三章搭建教程。
2. 购买指南展开目录
justhost 有位于俄罗斯新西伯利亚的节点,是这家服务商距离中国最近的节点,最低配置价格 109 卢布:
1 核 / 512 MB RAM / 5 GB 磁盘 / 200 MB 共享宽带
搬运阿里云盘文件到 OneDrive 最高能跑到 10M/s。支持支付宝付款,付款时默认先转美元再换人民币最终付款 11.2 RMB。下单后 5 天内支持撤单,费用返还于账户余额并可用于下次购买(所以 get 到薅羊毛的点没有?)不过需要注意的是,我主要用这家的 VPS 从阿里云盘搬资源到 OneDrive,整体搬运速度尚可,不会一直保持高速,其他网盘及搬运方向并未测试,可能不会理想。
2.1 购买 justhost展开目录
进入 justhost 官网,使用全局代理可调用网站自带谷歌翻译,以下步骤按照简体中文翻译得到的结果进行描述。选择 “虚拟专用网
”→“硬盘VPS启动
”,页面下方就可以对各项参数进行详细选择。
一般都是大批量传输文件,不然也不会如此大费周折的用 VPS 搬运文件,我试过用最低配置一次搬运五百多 G 的文件,512 MB RAM 迅速被占满直接崩溃了,问题不大,只需要将 RAM 稍稍拉到 1024 MB 就够用了,所以将下面的 RAM
拉到 1024 MB,其他软硬件配置不用管。继续往下拉,短期使用就将付款期限
” 选为 1个月
,“软件选择
” 勾选 “Ubuntu 服务器18.04 64位
”,毕竟就 5G 磁盘,这个系统镜像占用较小且顺手,“住宿
” 选择 “TTK(新西伯利亚)
”,通过查看俄罗斯地图可以发现此处地理距离中国最近。其他都不用管。选择完后返回网页顶部付款,139 卢布,转换汇率后即为 14.3 RMB,点击
订购
,注册账号,找到支付宝支付方式付款后等待 5 分钟左右付款成功,再等待 5 分钟左右 VPS 的 root 密码会发送到注册账户的邮箱,ssh 连接工具推荐使用 MobaXterm,基础免费功能够用了。网页右上角 “客户端
” 为账户中心,进入后,左侧服务管理下的 “主动服务
” 为已购买的 VPS,点击 VPS 列表中的 “管理
” 对 VPS 进行重装、重启、重置密码、撤单等操作。付款下的 “充值余额
” 就是字面意思。对于 VPS 的手把手购买教程就介绍到这里。对于这家服务商的 VPS 务必注意不要让它承受太多以免失去响应,我就达到过这种程度:使用 emby 刮削电影造成各项硬件负载极高,ssh 都无法连接,此时在个人中心的 VPS 管理页面中选择重启都没用,只能重装。
另外也可以去购买月抛机,所谓月抛意为每月需要重新购买不可续费,商家通过违规手段从云服务大厂获得机器,当然基本都是千兆无限流量,很适合短时间搬运大量文件,不适合部署需要长期使用的项目。推荐去 hostlocal 论坛搜索相关信息,购买时注意质保以及相关评测。
3. 搭建过程展开目录
3.1 项目介绍展开目录
此处有两个项目可供选择,均支持 docker 部署,docker 对机器性能要求较高而且我也不习惯 docker,有能力自己通过 docker 部署。主要介绍项目一 webdav-aliyundriver 搭建过程,可依葫芦画瓢搭建项目二。
- ① 项目一 webdav-aliyundriver
必须在 Java 环境下使用,资源占用高,支持双向读写文件。用 Windows 配置 java 环境挺麻烦的,本地有 Linux 环境或者虚拟机的话也可以直接在本地内网搭建。 - ② 项目二 aliyundrive-webdav
超级轻量简便,资源占用极低,支持 Windows 端、Linux 端、路由器固件,由于我不是路由器玩家就不涉及路由器这块了。主要适用场景:在支持 WebDAV 的客户端观看阿里云盘的视频视频(我倒是一直把阿里云盘当单纯的资源中转工具盘)。另外,本项目有简便易用的安卓客户端分支 webdav-aliyundriver-android。
3.2 搭建项目一展开目录
3.2.1 连接服务器展开目录
使用 MobaXterm 连接 ssh,点击左上方 Session
,选择 ssh
:Remote host
填写服务器 ip,Specify username
填写 root
,port
默认 22;
在下方 Bookmark settings
中对 Session name
自定义名称,点击 OK
;
此时左侧栏出现自定义的 Session name
,双击开始连接,粘贴邮件中的密码,终端不会直接显示密码,回车即可连接成功。对于第一个项目和通过 justhost 购买的 VPS 单纯搬运资源而言,由于项目占用资源高、磁盘空间小,刚拿到 VPS 可以删去一些不必要的组件和 Linux 内核,对于第二个项目和其他配置的 VPS 请自行斟酌,所预装的组件、内核版本也不尽相同,特别注意:若 VPS 上还部署了其他项目则这些组件就不再是多余的了,删掉会导致安装、更新一些软件失败,还得再装回来,甚至重装系统。
使用命令 dpkg -l
查看已安装组件,自行百度搜索删除内核方法。毕竟只有 5G 磁盘,搬运资源时任务缓存会占用一部分空间,为确保稳定性省吃俭用腾出空间。在终端界面底栏的各项监控参数中,可看到最后一项磁盘占用参数的变化。
删去不必要组件:
- apt purge cpp cpp-7 g++ g++-7 gcc gcc-7 make nano vim-common vim-tiny -y
- apt autoremove -y
删去多余老旧内核:
- apt purge linux-headers-4.15.0-88 linux-headers-4.15.0-88-generic linux-image-4.15.0-88-generic linux-modules-4.15.0-88-generic linux-modules-extra-4.15.0-88-generic -y
- update-grub
删去 swap 分区文件:
- swapoff /swapfile
- rm /swapfile
3.2.2 开始搭建展开目录
本项目已提供编译好的 jar 文件,可直接下载:
- wget https://github.com/zxbu/webdav-aliyundriver/releases/download/v2.4.1/WebDAV-2.4.1.jar
偷一下懒:通过安装 jar 打包命令 maven
的同时会安装 java 环境:
- apt install maven
将 jar 文件移到单独文件夹方便管理,我这里移到 root 目录下的 aw 文件夹中。
在当前 root 目录中创建 aw 文件夹、将 jar 包重命名为 webdav.jar
并移到 aw
文件夹、进入 aw 目录:
- mkdir aw
- mv WebDAV-2.4.1.jar webdav.jar
- mv webdav.jar aw
- cd aw
开始启动,github 项目已详细说明默认端口账密、启动参数、refreshToken 的获取方式,我的启动命令是:
- java -jar webdav.jar --aliyundrive.refresh-token="refreshToken" --server.port=端口 --aliyundrive.auth.user-name=用户名 --aliyundrive.auth.password=密码
详细参数自行按照项目说明改就是了。
若有兴趣也可自行编译 jar 包:
下载 github 仓库 releases 源码:
- wget https://github.com/zxbu/webdav-aliyundriver/archive/refs/tags/v2.4.1.zip
解压源码、所有文件、进入源码根目录:
- unzip v2.4.1.zip
- ls -a
- cd webdav-aliyundriver-2.4.1
安装打包命令 maven
的同时会安装 java 环境:
- apt install maven
开始编译 jar 文件:
- mvn clean package -Dmaven.test.skip=true
大约两分钟左右即可编译完毕,得到的 jar 包在本目录下的 target 文件夹中,名为 webdav-aliyundriver-2.4.1.jar,名字太长不方便操作,重命名为 webdav.jar:
- cd target
- mv webdav-aliyundriver-2.4.0.jar webdav.jar
将 jar 文件移到单独文件夹方便管理,我这里还是移到 root 目录下的 aw 文件夹中。
进入 root 目录并创建 aw 文件夹、将 jar 包移到 aw
文件夹、删除源码包和文件夹:
- cd && mkdir aw
- mv webdav-aliyundriver-2.4.1/target/webdav.jar aw
- rm -r webdav-aliyundriver-2.4.1 v2.4.1.zip
3.2.3 后台运行展开目录
注意此时关闭 MobaXterm 的终端,VPS 上面的进程也会终止,以下两种后台运行方式自己选择:
① nohup
将启动命令放入 nohup &
之间:
- nohup java -jar webdav.jar --aliyundrive.refresh-token="refreshToken" --server.port=端口 --aliyundrive.auth.user-name=用户名 --aliyundrive.auth.password=密码 &
运行日志会输出到同目录下的 nohup.out 文件中,执行 cat nohup.out
显示日志内容。
终止进程:执行 ps ax
查找含有以上启动命令的进程,列表开头即为进程 ID,执行 kill 对应ID号
杀死进程。也可以直接杀死所有 java 进程:pkill java
② screen
对于 screen 可以抽象理解为 Windows 打开的会话窗口,每次进入窗口都会复原上次正在执行的命令。
安装 screen、新建名为 aw 的窗口并进入:
- apt install screen -y
- screen -S aw
输入启动命令:
- java -jar webdav.jar --aliyundrive.refresh-token="refreshToken" --server.port=端口 --aliyundrive.auth.user-name=用户名 --aliyundrive.auth.password=密码
使用快捷键退出窗口保持后台运行:Ctrl+A+D
列出已有窗口、进入 aw 窗口:
- screen -ls
- screen -r aw
使用快捷键结束当前正在执行的命令(Linux 通用):Ctrl+C
使用快捷键关闭窗口、终止进程、不再后台运行:Ctrl+D
,别按多了,退出终端也是这个快捷键。
也可使用上面的 ps ax
命令查找进程 ID 并 kill,也可直接 pkill screen
关闭所有 screen 窗口及其中的进程。
以上完成后台运行 WebDAV 项目后,WebDAV 链接即为 http://服务器ip:端口
,一般 WebDAV 链接不支持浏览器访问,不过这个比较特殊,在浏览器地址栏访问 WebDAV 提示输入账密即为搭建成功,显示 WebDAV 文件列表。将 WebDAV 链接及账密填进各个支持 WebDAV 的软件中,即可读写阿里云盘里面的的文件,从而进行一系列自动化备份操作,比如 PC 端的 Air Explorer,破解版也不少,不再过多介绍。对于本项目的安卓客户端分支 webdav-aliyundriver-android,安装后在设置中填入 token,在首页启动,本地 ip 为 127.0.0.1
,如上述一样的用法。
3.2.4 安卓 Termux展开目录
实在想折腾也可以在旧安卓手机上用 termux 搭建,不过局限较大,没有公网 ip 的话只能本机内部使用,得有稳定的网络环境而且相当吃性能,夏天建议有良好的散热不然小心烫手,强烈建议自备魔法代理工具以备不时之需。手机系统版本最低应为安卓 7,因为最新版 termux 只支持安卓 7 及以上系统,低版本不受支持问题多,我这里使用的手机是 realmeX 安卓 11。由于搭建步骤与在 VPS 上面如出一辙,重复操作我会一笔带过不再说明,请先仔细阅读上文 VPS 搭建过程。
开始搭建,过程中遇到打不开网站或者下载东西很慢等情况建议开启全局代理。
安装最新版 termux。termux 直装 java 环境挺麻烦的,依然习惯一条命令安装 java 环境,所以我们打开 termux 使用以下命令安装 Linux 子系统 ubuntu 并启动:
- pkg install wget openssl-tool proot -y && hash -r && wget https://raw.githubusercontent.com/EXALAB/AnLinux-Resources/master/Scripts/Installer/Ubuntu/ubuntu.sh && bash ubuntu.sh
启动 ubuntu 子系统:
- ./start-ubuntu.sh
此系统安装命令来自于 AnLinux,可选择其他系统安装。
更新源、升级软件包、安装 maven
命令及 java 环境:
- apt update
- apt upgrade
- apt install maven -y
该 Ubuntu 子系统相当精简,缺少很多常用组件。安装下载命令 wget
及解压命令 unzip
:
- apt install wget unzip -y
并如上文一样下载源码、解压、编译、重命名、移动:
- wget https://github.com/zxbu/webdav-aliyundriver/archive/refs/tags/v2.4.0.zip
- unzip v2.4.0.zip
- cd webdav-aliyundriver-2.4.0
- mvn clean package -Dmaven.test.skip=true
- cd target
- mv webdav-aliyundriver-2.2.0.jar webdav.jar
- mkdir /root/aw
- mv webdav.jar /root/aw
- rm -r /root/v2.4.0.zip webdav-aliyundriver-2.4.0
- cd /root/aw
由于网络因素手机编译 jar 包相当缓慢,毕竟涉及到的都是国外网站,我花了近 20 分钟才编译完毕,是 VPS 上面所花时间的 10 倍,所以我这里提供了编译好的 2.4.0 版本的 jar 包,如果也是编译太慢可直接下载使用:
- mkdir /root/aw && cd /root/aw
- wget https://om.chirmyram.com/rep/Plugin/aw/v2.4.0/webdav.jar
我这里选择使用 screen 让任务进入后台运行:
- apt install screen -y
- screen -S aw
-
- java -jar webdav.jar --aliyundrive.refresh-token="refreshToken" --server.port=端口 --aliyundrive.auth.user-name=用户名 --aliyundrive.auth.password=密码
-
- Ctrl+A+D
搭建好后,本机内部 ip 为 127.0.0.1
,所以 WebDAV 链接为:http://127.0.1:端口
,可在本机上安装支持 WebDAV 的软件使用,如用 nplayer 播放视频,主机地址为 127.0.0.1
,端口、账密为启动命令中指定的参数。
3.3 搭建项目二展开目录
此处主要介绍搭建过程,获取 refresh token 的步骤在项目一的 github 仓库中已有详细说明,后台运行进程的方式也在上文项目一的搭建过程中说明,不再赘述。
3.3.1 Windows 端展开目录
在 releases 页面下载对应系统的 exe 包解压使用,先直接双击测试是否缺少依赖库,我在 Windows11 上首次运行提示 “缺少 VCRUNTIME.dll” 文件,于是百度搜索下载该文件,将 64 位 dll 文件复制到 C:/Windows/System32
路径下。我这里也提供直接下载方式 vcruntime140。若还提示缺少其他 dll 文件自行在百度搜索对应文件下载复制,一般都会附带说明下载后复制到指定的位置。双击本项目程序后窗口一闪而过即可正常使用。
使用方式:在主程序目录下空白处,按住 Shift 键后在空白处单击右键,在右键菜单中选择 “在此处打开 Powershell 窗口”,当然 win11 是在右键菜单更多选项中。此时在 Powershell 终端中输入启动参数(中文部分即为自行修改内容)并回车:
- ./aliyundrive-webdav.exe -I -U 用户名 -W 密码 -r 你的token
默认端口 8080,自行参照 github 项目说明修改其他参数。在浏览器中输入 http://127.0.0.1:8080
会显示网盘内容,这也就是 WebDAV 链接,可挂载于本机上的 WebDAV 软件中。
3.3.2 Linux 端展开目录
安装相当简单,此项目已合并至 python 的 pip 库,Linux 基本都内置 python 环境。安装本项目:
- pip install aliyundrive-webdav
升级本项目:
- pip install --upgrade aliyundrive-webdav
若提示 Command ' pip 'not found
,多半 pip 版本不对,尝试换为 pip3:
- pip3 install aliyundrive-webdav
再极端点的情况是没有安装 pip,那么就安装 pip 或 pip3:
- apt install python-pip
或:
- apt install python3-pip
若遇到了更极端的情况就自行百度吧。
启动命令:
- aliyundrive-webdav -I -U 用户名 -W 密码 -r 你的token
使用项目一搭建过程所述的 nohup 或 screen 方式运行于后台。
3.3.3 安卓 Termux展开目录
参照项目一,仍然安装 Ubuntu 子系统并更新源。
安装 pip3:
- apt install python3-pip
安装本项目:
- pip3 install aliyundrive-webdav
后面的步骤就和上文一致了。其实在安卓 Termux 中部署这俩项目都不简便,Linux 子系统安装 java 环境、python3 环境所需依赖包体积都是几百 MB,折腾完后数据占用都快 1 G 了。
4. 挂载使用展开目录
Rclone 是一个用于在多平台进行文件同步的命令行工具,支持多家网盘及文件传输协议。这里主要介绍 Linux 端挂载 WebDAV 的使用方式:
使用官方脚本安装最新 rclone:
- curl https://rclone.org/install.sh | sudo bash
接下来使用 rclone 挂载 WebDAV,输入后回车,一步一步跟着 rclone 的提示来即可,下方#
号后面的内容为步骤翻译注释,不要全部复制粘贴进去了,仔细看提示根据自己的实际情况来修改,输入命令 rclone config
开始配置:
- rclone config
-
- n/s/q> n #n为新建配置
-
- name> aw #aw为自定义配置项名称
-
- Storage> 34 #webadv储存类型序号,不同版本的rclone序号可能不一样
-
- url> http://服务器ip:端口 #WebDAV链接
-
- vendor> 4 #其他站点、服务或软件
-
- user> *** #WebDAV用户名
-
- y/g/n> y #输入自己的密码
-
- password: #输入密码,确保密码输入正确,终端不会显示密码
-
- password: #再次输入密码确认
-
- bearer_token> 回车 #按回车键跳过这步
-
- y/n> 回车 #按回车键默认不编辑高级配置
-
- y/e/d> 回车 #按回车键默认为确认配置,此时已显示配置内容,仔细从显示的内容中查找规律
-
- e/n/d/r/c/s/q> q #此时已显示新的配置项,输入q退出配置
输入 rclone config file
显示 rclone 配置文件路径。
输入 rclone config show
显示 rclone 配置文件内容。
自行搜索其他平台的 rclone 挂载 OneDrive 或其他网盘的教程,已有大量相关教程所以这里不再介绍。每个配置项都会在配置文件中一一列出来,文件内的密码都为再次加密过后的密码所以与原密码不同,只有 rclone 能解密识别,命令行配置过程中也不可输入加密后的密码,否则会被当做原密码造成配置错误无法读取文件。配置文件可被移动到其他 VPS 上面同目录重复使用,直接复制文件或文件内容即可,不必重新配置。
上文中我配置项的自定义名称为 aw
,在 rclone 中每个配置项都可以看做一个磁盘盘符,用实际操作对 rclone 常用命令举例:
列出 aw
中文件及文件夹:
- rclone lsf aw:
不能漏掉配置项后面的英文冒号。
将 aw
根目录下的文件 1.txt
复制到本地 root 目录下(反之成立):
- rclone copy aw:/1.txt /root
将 aw
根目录下的文件 1.txt
移动到另一个配置项 od
根目录下的 2
文件夹中,并显示移动进度:
- rclone move aw:/1.txt od:/2/ -P
参数 -P
即为显示任务进度。
还可以将配置项根目录或子文件夹挂载到本地硬盘,就像多一个本地磁盘一样,需先安装 fuse,此处将 aw
根目录挂载到本地磁盘根目录 aw
文件夹下:
- apt install fuse
- mkdir /aw
- rclone mount aw: /aw
挂载完成后使用命令 ls /aw
即可显示文件内容,并支持使用 linux 原生命令 cp
、mv
等操作文件,不过没有 rclone 本身的命令稳定。在 Windows 端使用 rclone 挂载到本地后也可在资源管理器中显示文件,不过这种挂载方式只能读写文件,毕竟挂载于本地的文件夹的文件系统与真实物理磁盘不一样,无法执行运行软件等操作。
安卓端仍然可以安装 rclone 挂载 OneDrive 网盘等其他网盘搬运资源:
- apt install curl sudo -y
- curl https://rclone.org/install.sh | sudo bash
不过由于网络环境的复杂性,搬运速度可能很慢,且不支持使用 rclone 挂载到本地。
好了你已经学会这个公式了,我们来开始解题吧。同样关闭终端后 rclone 的进程会终止,需要使用上文两种后台运行方式让 rclone 的任务保持运行。只是搬运资源的话以上复制、移动等简单操作足矣,其他操作请自行搜索 rclone 使用教程。
5. 结语展开目录
此处只介绍阿里云盘 WebDAV 的搭建、挂载、资源搬运教程,若需将使用域名、消除端口,还涉及域名的购买使用、nginx 反向代理等杂糅知识,不过在使用宝塔面板后图形化操作会变得直观简洁,而在宝塔面板里面进行相关操作的教程在百度也是烂大街的,我自己也经常使用宝塔面板。如果我把这些再讲清楚,文章长度至少再增加几倍,将会造大量重复无意义的轮子,实在是顶不住。
自行去探索吧,我也是一步一百度走过来的。
本文作者:七米蓝
本文标题:《自建阿里云盘 WebDAV 功能并搬运资源》
本文链接:https://www.chirmyram.top/archives/aliyunwebdav
版权声明:本博客文章均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!
大佬我想问下 账号密码是不是不对了 我连接不上
请问视频音画不同步是什么问题。
没遇到过。
资料费好多精力收集,就不怕突然用不了吗?
目前是有多重备份,而且还在继续增加备份。
想知道这种 VPS 连接延迟怎么样,一直想通过服务器搭建 rustdesk 远程投屏,国内带宽大一点有点贵,国外的延迟感觉会很高
你可以试试香港、日本的 vps,我没折腾过 rustdesk。
感谢回复!
请问挂载为本地时出现 2022/04/04 06:42:21 mount helper error: fusermount: fuse device not found, try 'modprobe fuse' first
2022/04/04 06:42:21 Fatal error: failed to mount FUSE fs: fusermount: exit status 1 怎么办
用的什么系统安装 fuse 了吗?
安装了,ubuntu 20.04 LTS
是我框架的关系吗,我的服务器是 openvz 的
这个帖子说重启就好:https://hostloc.com/thread-718119-1-1.html你试试。
可以了,谢谢
几乎用不了,rclone 的速度无论是 copy,move 还是 sync,速度都只有几 kb/s
阿里云盘疑似会阻断国外 ip,时不时停一下,一般等段时间会恢复速度,或者尝试换别家的 VPS,我最近搬运还是有速度的。
图片炸了,我不好搬运哈~~
图片已恢复。