技术实践:rclone+alist组合拳,轻松搞定NAS与阿里云盘数据同步


简介
-
alist可以轻松挂载各大主流云盘,并转换成webdav服务
-
rclone同样支持很多云存储驱动,包括webdav,可以实现增量数据同步,高效便捷
-
alist搭配rclone,可以实现本地与本地、本地与云盘、云盘与云盘之间的数据同步,保证数据存储安全
-
下面是现实nas本地文件同步阿里云盘数据的操作用例
第一步:安装alist,并且把阿里云盘指定目录挂在到alist
-
docker安装alist,新建配置文件docker-compose.yml,配置如下:
version:`` ``'3'services:``alist:``image:``'xhofe/alist:latest'``volumes:``-``./data:/opt/alist/data``ports:``-``'5244:5244'``environment:``-``PUID=0``-``PGID=0``-``UMASK=022``-``TZ=Asia/Shanghai``restart:`` ``unless-stopped -
一键启动运行
docker-compose up -d -
获取默认登录账号密码
docker-compose logs -
登录alist后台,添加阿里云盘open驱动,设置刷新token,具体参考官方指导:https://alist.nn.ci/zh/guide/drivers/aliyundrive_open.html
-
添加阿里云盘open驱动和挂在路径 webdav策略使用“本地代理” 设置阿里云盘的刷新token,指定挂载的根目录 挂载上了 因为要用到alist提供的webdav服务,所有需要开启用户webdav权限
第二步:安装rclone,配置alist提供的webdav服务
-
具体同步逻辑如下图所示
-
安装配置可参考:https://github.com/luler/rclone_docker ,拉代码,进入目录
//拉代码git ``clone`` https:``//github.com/luler/rclone_docker.git//进入目录cd rclone_docker -
修改config/rclone.conf,配置远程存储驱动,这里使用webdav为例,其他驱动请参考rclone官方文档:https://rclone.org/docs/ rclone要求webdav的密码不能直接使用明文,需要加密一下
docker run --``rm`` -it ghcr.io/luler/rclone_docker:latest rclone obscure ``"fUlaQHte"config/rclone.conf配置内容如下:[mywebdav]type`` = webdavurl`` = http://``192.168``.``1.105``:``5244``/dav/ ``# 这里填写alist的webdav地址,要填容器内可以访问alist的ip或域名vendor`` = other ``# 一般默认这个即可user`` = admin ``# webdav用户名pass`` = a-Zsy2HhSSgMYC40dG_WevAGFMaUFzys ``# webdav密码,注意:这里需要使用rclone的混淆密码,如:rclone obscure "你的明文密码"
#no_check_certificate=true # 如果需要跳过SSL验证
-
修改config/crontab,配置定时任务,如下示例:
# 每分钟执行备份,flock防止重复执行* * * * * flock -n /tmp/rclone.lock rclone ``sync`` mywebdav:我的阿里云盘目录/ /data --log-file=/var/log/rclone-sync.log --log-level=INFO --stats=10m -
配置好了之后,代码目录下已配置好docker-compose.yml,使用docker-compose一键启动即可
docker-compose up -d -
查询执行情况
docker-compose logs成功执行完毕 云盘数据已被同步下来 如果失败,可以打开rclone的日志文件logs/rclone-sync.log,以便分析原因
总结
-
普通阿里云盘用户有下载限速,如果数据很大,第一次rclone同步会耗时很久,第一次完成后,后续就是增量同步了
-
本用例只是一个简单用例,类似的,使用alist、rclone还可以扩展到更多使用场景

推荐一下个人网站(本文内容如有错漏只会在个人博客更新):