root@guaosi:~# rclone configCurrent remotes: e) Edit existing remoten) New remoted) Delete remoter) Rename remotec) Copy remotes) Set configuration passwordq) Quit config e/n/d/r/c/s/q> n # 创建一个新的配置项,回车 name> aliyunwebdav # 给新的配置项取个名字,后面使用时都会通过这个名称来区分是使用哪个配置,个人喜好,回车 ...39 / Uptobox \ "uptobox"40 / Webdav \ "webdav"41 / Yandex Disk \ "yandex"... Storage> 40 # 使用webdav(这里是不是40取决于rclone版本,反正是使用webdav就对了) Enter a string value. Press Enter for the default ("").url> http://192.168.137.200:9090 # 填写 webdav server 的地址信息 ... 4 / Sharepoint with NTLM authentication, usually self-hosted or on-premises \ "sharepoint-ntlm" 5 / Other site/service or software \ "other"vendor> 5 # 没有阿里云盘,选个其他即可 Enter a string value. Press Enter for the default ("").user> admin # 输入连接 webdav server 的账号 Choose an alternative below. Press Enter for the default (n).y) Yes type in my own passwordg) Generate random passwordn) No leave this optional password blank (default)y/g/n> y # 使用设定的密码 Enter the password:password: admin # 输入连接 webdav server 的密码 Confirm the password:password: admin # 再一次确认输入连接 webdav server 的密码 Enter a string value. Press Enter for the default ("").bearer_token> # 没有,直接回车 Edit advanced config?y) Yesn) No (default)y/n> # 以上这些信息够了。直接回车 --------------------[aliyunwebdav]type = webdavurl = http://192.168.137.200:9090vendor = otheruser = adminpass = *** ENCRYPTED ***--------------------y) Yes this is OK (default)e) Edit this remoted) Delete this remotey/e/d> # 确认无误,直接回车 Current remotes: Name Type==== ====aliyunwebdav webdav e) Edit existing remoten) New remoted) Delete remoter) Rename remotec) Copy remotes) Set configuration passwordq) Quit confige/n/d/r/c/s/q> q # 配置完成,退出
另外,该命令会阻塞命令窗口,所以另外启动一个窗口进入 /usr/local/webdav_test 查看是否能看到云盘里的文件。此外,如果我们关闭了先前执行挂载命令的窗口,那么挂载就会自动解挂退出,并且如果我们想开机时自动进行云盘挂载,也需要重新手动跑命令,不够方便。所以,我们可以借助 Linux 的 systemd 将命令服务化来进行管理。
挂载报错处理:解决方法:rclone mount报错 报错内容如下:Fatal error: failed to mount FUSE fs: fusermount: exec: "fusermount": executable file not found in $PATH Centos解决办法:yum install fuse Debian/Ubuntu解决办法:apt-get install fuse安装完fuse后,再次执行挂载命令进行挂载
服务化
创建 system 的 service
vim /etc/systemd/system/rclone.service
内容如下
[Unit]Description=RcloneAfter=network-online.target[Service]Type=simpleExecStart=rclone mount aliyunwebdav:/webdav_test /usr/local/webdav_test --cache-dir /tmp --allow-other --vfs-cache-mode writes --allow-non-emptyRestart=on-abortUser=root[Install]WantedBy=default.target
通过 webdav 协议挂载阿里云盘到本地
什么是 webdav 协议
WebDAV 基于 HTTP 协议的通信协议,在 GET、POST、HEAD 等几个 HTTP 标准方法以外添加了一些新的方法,使应用程序可对 Web Server 直接读写,并支持写文件锁定 (Locking) 及解锁 (Unlock),还可以支持文件的版本控制。因为基于 HTTP,在广域网上共享文件有天然的优势,移动端文件管理 APP 也大多支持 WebDAV 协议。使用 HTTPS 还能保安全性。Apache 和 Nginx 支持 WebDAV,可作为 WebDAV 文件共享服务器软件。也可以使用专门的 WebDAV 软件部署。
可以认为通过 webdav,我们可以直接将云盘挂载到本地,不需要使用服务商提供的专门软件就能进行管理使用。目前国内支持的最好的就是坚果云了,自身就支持 webdav,但是坚果云免费的限制流量。阿里云盘明面上不支持,但是通过搭建 webdav-aliyundriver 项目,来代理转发请求,实现阿里云盘支持 webdav 协议。
流程梳理
本篇将会讲解如下
webdav-aliyundriver
Raidrive
挂载阿里云盘Rclone
挂载阿里云盘教程内容
搭建 webdav-aliyundriver
阿里云盘自身是不支持 webdav 协议的,所以我们需要一个中转,接收 webdav 协议,然后再将 webdav 协议转换为 HTTP 请求发送给阿里云盘,以此来模拟阿里云盘支持 webdav。而这个中转,就是
webdav-aliyundriver
。更多的介绍使用和搭建方式可以参考项目的 readme启动
我们通过在
ubuntu20
(ip:192.168.137.200) 上使用docker
快速启动一个webdav-aliyundriver
参数说明
浏览器获取 refreshToken 方式
信息整理
容器正常跑起来后,意味着
webdav server
已经成功搭建了。连接webdav server
的信息如下 (上面启动容器时的参数决定的)连接 webdav server
现在我们可以先到阿里云盘的网页或者客户端上,在顶级目录下创建一个名为
webdav_test
的文件夹,作为接下来的讲解案例使用windows 通过
Raidrive
挂载阿里云盘webdav-aliyundriver
对 Windows 原生自带的添加网络设备兼容不够好,存在问题,所以需要安装第三方,也就是Raidrive
作为客户端。下载地址:https://cloud.189.cn/t/fiy2immmIbIn(访问码:ypc2)Raidrive
安装完毕后,点击Add
,然后如下配置这里的 path 如果不填写,则默认就是挂载阿里云盘的顶级目录。如果填写
/webdav_test
, 则是挂载我们刚刚创建的webdav_test
目录。点击 OK 后,如果挂成功,我的电脑里就会发现已经挂载了一块网盘,打开就可以看到阿里云盘的里保存的文件。这样就可以不使用阿里云盘的客户端,直接对云盘里的文件进行操作了,也可以直接使用本地播放器在线播放里面的电影。
Linux 通过
Rclone
挂载阿里云盘Rclone 的步骤比
Raidrive
略显复杂,它需要先配置连接信息,然后通过该配置信息再对网盘执行相关操作。安装 RCLONE
我们直接使用官网的安装脚本进行安装,更多安装方式可以查看 官网说明
配置 RCLONE
安装完成后,配置一个专门连接
webdav-server
的配置,详细步骤如下:输入
rclone config
,开始进行配置 (注意看注释说明)输入命令
查看是否会列出网盘下的文件列表,会则表示配置无误了。
RCLONE 常用命令
文件上传
文件下载
列表
挂载阿里云盘
上面只是在发送命令来与
webdav server
进行交互,如果我们想像在windows
上一样像挂载一块盘进来,可以使用cp
,mv
之类的命令直接进行操作,那应该如何设置呢?实际上很简单,我们通过
rclone
自带命令就可以实现盘的挂载上面命令会将阿里云盘的
webdav_test
(也可以挂载顶级目录,也就是/
) 目录挂载到本地的/usr/local/webdav_test
目录下。另外,该命令会阻塞命令窗口,所以另外启动一个窗口进入
/usr/local/webdav_test
查看是否能看到云盘里的文件。此外,如果我们关闭了先前执行挂载命令的窗口,那么挂载就会自动解挂退出,并且如果我们想开机时自动进行云盘挂载,也需要重新手动跑命令,不够方便。所以,我们可以借助 Linux 的systemd
将命令服务化来进行管理。服务化
创建 system 的 service
内容如下
保存退出后,启动服务
设置开机自启
其它操作命令
好啦,这样就可以安心的跟小姐姐们玩耍啦~