最近在玩的两个好用工具:

两个项目都是基于Go语言开发,看来大家转Go是大势所趋呀~

今天先介绍一下rclone的使用经验。

Rclone是一个开源多线程命令行界面的计算机程序,可用于管理云存储。其功能包括档案同步文件传输加密缓存挂载。rclone 支持包括Amazon S3Google 云端硬盘在内等共五十多种云存储服务。
——From WIKI

简要流程

  • 下载安装最新版rclone在这里
  • 运行rclone config配置需要挂载的网盘,支持的云端存储类型十分多样,包含常用的OneDrive, Google Drive, SFTP/FTP, WebDAV, S3, COS, 详见类型列表,每类均有详细文档(英文),就不赘述
  • 使用rclone命令同步文件,采用rclone copyrclone sync等命令,直接将本地文件同步到云端,同时也可用于云端之间相互同步。

用途

mongodb 数据库备份

服务器的mongodb数据库中存储了重要数据,为以防万一,采用定时任务将数据导出备份到OneDrive

直接添加cron定时任务,mongodump并备份数据库。

1
2
3
4
# lrms-core和api_cuger_cn数据库备份
30 1 */7 * * mongodump -h 127.0.0.1:27017 -d lrms-core -o /root/mongodb_backup/
35 1 */7 * * mongodump -h 127.0.0.1:27017 -d api_cuger_cn -o mongodb_backup/
50 1 */7 * * rclone copy /root/mongodb_backup/ cos-backup:/backup-1252695297/mongodb_backup/

由于数据库存储量较大,这里我采用同在内网上的腾讯云COS作为云存储,提高备份速度。

内网 COS 上行和下行流量都是免费的,所以备份只消耗COS空间。

COS 图床备份

采用rclone定期将腾讯云图床上的文件备份到OneDrive上,以免数据丢失。

采用rclone config分别配置好OneDriveCOS,随后在cron中添加定时任务,每日备份一次

1
* * */1 * * rclone copy cos-image:/ OneDrive:/cloud_backup/

这个备份会消耗 COS 下行带宽,可能会产生费用,请谨慎使用!

如想使用 CDN 链接下载,可配置--s3-download-url选项,参考这里

Waline 数据库(SQLite)备份

此前将Waline采用Docker进行了私有化部署,数据存储于服务器 SQLite 数据库中。

为确保数据安全,将其定期同步至腾讯云COS(私有读写)

1
0 2 */1 * * rclone copy /root/docker-waline/data/waline.sqlite cos-backup:/backup-1252695297/waline/

Memos 数据库(SQLite)备份

与 Waline 一样,将文件备份到COS。

1
0 3 */1 * * rclone copy /root/.memos/memos_prod.db cos-backup:/backup-1252695297/memos/

同步博客数据

博客中有用到友链信息和百度统计信息,均为json数据。

采用rclone将动态生成的数据同步到腾讯云COS中(博客),每5分钟更新一次。

sync.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
cd "$(dirname "$0")"

file="friendly_links_active.json"

curl https://raw.githubusercontent.com/Doradx/hexo-friendly-links/output/json/friendly_links_active.json -O $file
if [ ! -f $file ]; then
echo "$file not exist, skip."
exit
fi
if jq empty $file >/dev/null 2>&1; then
jq -c '.' "$file" > "${file}.tmp" && mv "${file}.tmp" "$file"
coscli cp $file cos://blog/link/friendly.json
fi

cron 定时任务

每 5 分钟执行一次,获取数据并上传

1
*/5 * * * * bash /root/blog-cos-link-sync/sync.sh

联动

可挂载WebDAV,与AList 项目联动,挂载百度网盘、阿里网盘、坚果云等,相当舒服。

Q&A

  • rclone config添加的时候,选项极少,没有找到WebDAV等选项?

请确保从官网下载页面手动下载安装最新版rclone,用 apt-get 等方式下载的版本可能过于陈旧。

  • rclone syncrclone copy的区别?

两者都只会修改目的路径(dest),但sync会将源路径(source)中被删除的文件从目的路径(dest)中移除,而copy不会。

  • rclonedocker是否能碰撞出火花?

yes!rclone 提供了官方插件**Docker Volume Plugin**,可将rclone挂载为Volume,相当舒服,详见官方介绍

参考