抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

因为我用的甲骨文 vps,可能会玄学删 vps,所以需要频繁备份。放在国内公有云又怕审查,放谷歌微软的公有云容量又太少,歪门邪道又可能被删数据。有了 alist 就可以方便加密和解密数据,把加密后的数据放国内公有云就不怕审查了。用 alist 还有一个好处就是,如果你的数据同步到了多个公有云,alist 是可以很方便集中显示和管理公有云的文件的。rclone 也是常规的同步工具,直接备份 docker 文件夹就是了,这边就稍微记录一下。

前言

想要达成前面说到的目的,你需要:

需要的东西

  1. alist,并注册多个国内公有云账号,会把 vps 的数据同步到多个公有云
  2. 安装好 rclone。直接用官网提供的 bash,就没必要用 docker 了,因为可能要经常敲命令行,如果用 docker 还得进入 docker 才可以敲。

配置 alist

alist 可以很方便加密数据并上传到公有云。见官网教程

这里稍微说明一下怎么做

  1. 先把公有云(如阿里云,天翼云)添加到alist
  2. 之后创建Crypt驱动,填写Crypt的路径,并且填写加密后的文件所在路径。例如,阿里云挂在到了/ali,那么需要在这个/ali里面预先创建一个空的文件夹,例如/ali/test,之后在Crypt配置里,填写Crypt本身的路径,例如/Crypt,之后填写加密后的文件所在路径,也就是/ali/test

那么就可以通过访问/Crypt来加密解密/ali/test里的文件了,上传文件到/Crypt也就同样可以加密文件到/ali/test

之后如果你选择把同一个文件加密到多个公有云,使用 alist 的别名功能可以方便集中显示和管理分布在各个公有云的文件。

同样不要忘记导出 alist 的配置,可以用中文的密码,更加难破解。在 alist 的 dash 中不能直接输入中文,可以在别处输入了密码后,再复制粘贴到 dash。

配置 rclone

通过 alist 来中转而不是直接在 rclone 中挂载公有云的原因是,rclone 挂载起来没有 alist 方便,而且 alist 文档写的比较清楚。我一开始是用 rclone 来挂载谷歌云盘的,官网教程用的谷歌云盘的 oauth api,结果弄到后面需要我在有浏览器的电脑里,下载 rclone 然后再用浏览器登录,把 cookie 复制到 vps,,,

rclone 可以直接挂载 alist 的 webdav,例如挂载 alist 的 /ali/test,就填写 http://127.0.0.1:port/dav/ali/test,注意你 alist 的端口,还要要加/dav前缀。

输入 rclone config 就可以挂载 webdav。webdav 的用户和密码同 alist 的登录用户密码。

配置同步

rclone sync and copy

rclone sync命令可以方便同步改变了内容的文件,例如 test.txt 中改变了一个字符,这时候运行同步命令就可以同步,如果再一次运行同步命令,则不会重复上传文件到公有云,节省了带宽。如果删除文件也会同步删除,rclone copy则不会同步删除。sync命令同样可以备份公有云端要删除的文件,具体见官网文档。

建议把同步命令写到 .sh 里,方便管理。rclone sync需要先了解怎么用。

/home/rclone/bash.sh
1
2
3
4
5
6
7
8
9
rclone sync /home/dcoker-data ali:/dcoker-data \
--copy-links --exclude-from /home/exclude.txt –ignore-size --disable-http-keep-alives --update

## --copy-links 复制软连接

## --exclude-from 排除某些文件或者文件夹。语法见 <https://rclone.org/filtering/>

# --dry-run 检查哪些文件要同步

可以在 exclude.txt 中定义不同步哪些文件。这里给一个样板。

/home/exclude.txt
1
2
3
4
5
6
7
tmp/**
icon_cache/**
**pycache**/**
netlify_cert/logs/**
\*.pem
alist/alist-data/log/**
alist/alist-data/temp/**

可以定时备份。

cron
1
2
3
4
5
6
7
8
9
10
11
12

# 手动把本文件放在/etc/cron.d

# 最后运行 service cron restart

# 如果需要使用其他用户运行,请改掉 root

# 需要注意的是最后的那个空行不能删除

SHELL=/bin/bash
0 0/8 \*\* ? root /bin/bash /home/rclone/bash.sh > /tmp/rclone.log 2>&1

评论