MENU

自建阿里云盘WebDAV功能并搬运资源

August 3, 2021 • Read: 19013 • 记录

姊妹篇:让OneDrive实现WebDAV服务

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填写rootport默认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原生命令cpmv等操作文件,不过没有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许可协议,转载请注明出处!

Last Modified: April 26, 2023
Archives QR Code Tip
QR Code for this page
Tipping QR Code
Leave a Comment

18 Comments
  1. 野马 野马   Windows 10 x64 Edition  Google Chrome 116.0.0.0

    大佬我想问下 账号密码是不是不对了 我连接不上

  2. 后羿 后羿   Android 7.1.1  WebView 4.0

    请问视频音画不同步是什么问题。

    1. ChirmyRam ChirmyRam   Windows 10 x64 Edition  Chromium Edge 114.0.0.0

      @后羿没遇到过。

  3. kkly kkly   Windows 10 x64 Edition  Google Chrome 110.0.0.0

    资料费好多精力收集,就不怕突然用不了吗?

    1. ChirmyRam ChirmyRam   Windows 10 x64 Edition  Chromium Edge 111.0.1661.27

      @kkly目前是有多重备份,而且还在继续增加备份。

  4. chiao chiao   Windows 10 x64 Edition  Google Chrome 107.0.0.0

    想知道这种VPS连接延迟怎么样,一直想通过服务器搭建rustdesk远程投屏,国内带宽大一点有点贵,国外的延迟感觉会很高

    1. ChirmyRam ChirmyRam   Windows 10 x64 Edition  Chromium Edge 108.0.1462.2

      @chiao你可以试试香港、日本的vps,我没折腾过rustdesk。

    2. chiao chiao   Windows 10 x64 Edition  Google Chrome 107.0.0.0

      @ChirmyRam感谢回复!

  5. itsHenry itsHenry   Windows 10 x64 Edition  Chromium Edge 100.0.1185.29

    请问挂载为本地时出现 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 怎么办

    1. ChirmyRam ChirmyRam   Windows 10 x64 Edition  Chromium Edge 101.0.1210.2

      @itsHenry用的什么系统安装fuse了吗?

    2. itsHenry itsHenry   Windows 10 x64 Edition  Chromium Edge 100.0.1185.29

      @ChirmyRam安装了,ubuntu 20.04 LTS

    3. itsHenry itsHenry   Windows 10 x64 Edition  Chromium Edge 100.0.1185.29

      @ChirmyRam是我框架的关系吗,我的服务器是openvz的

    4. ChirmyRam ChirmyRam   Windows 10 x64 Edition  Chromium Edge 101.0.1210.2

      @itsHenry这个帖子说重启就好:https://hostloc.com/thread-718119-1-1.html
      你试试。

    5. itsHenry itsHenry   Windows 10 x64 Edition  Chromium Edge 100.0.1185.29

      @ChirmyRam可以了,谢谢

  6. Leristli Leristli   Windows 10 x64 Edition  Google Chrome 96.0.4664.110

    几乎用不了,rclone的速度无论是copy,move还是sync,速度都只有几kb/s

    1. ChirmyRam ChirmyRam   Windows 10 x64 Edition  Chromium Edge 98.0.1100.3

      @Leristli阿里云盘疑似会阻断国外ip,时不时停一下,一般等段时间会恢复速度,或者尝试换别家的VPS,我最近搬运还是有速度的。

  7. wolffy1998 wolffy1998   Windows 10 x64 Edition  Chromium Edge 96.0.1054.53

    图片炸了,我不好搬运哈 ~~

    1. ChirmyRam ChirmyRam   Windows 10 x64 Edition  Chromium Edge 98.0.1093.6

      @wolffy1998图片已恢复。