backup-tool

写一个备份和通知工具是刚接触 restic 的想法,之前也写过一个文章来讲手动实现的方式。

现在有时间闲下来就实现了该项目 Backup Tool,欢迎大家 star,试用并提出意见。


目前我观察到大多数人没有备份习惯或者备份是直接利用 rclone 同步实现的,但是利用 restic 会有以下好处:

  • restic 能够方便地备份多个文件(从文件中读取需要备份的路径)
  • restic 会对备份文件进行压缩
  • restic 支持版本控制(每次备份都是一个快照)
  • restic 备份文件是加密的(当然密码也可以设置为空),即使是共享云端存储空间,别人也不会知道内容(当然即使这样也不推荐)
  • restic 是多平台的,Windows 也能使用

所以我写了该项目对 restic 简单功能进行封装,并定时调度,同时支持 Telegram 和邮件通知

restic 支持的后端存储在该页面有讲,最常用的还是利用 rclone 和 OSS(S3)。

如果使用 OSS(S3),只需要在当前终端以及 .bashrcexport 相关配置即可,具体参见官方教程所需配置;而使用 rclone,也只需要提前用 rclone 配置好云端存储即可。

当前教程将以 rclone 为例。

使用 rclone 挂载云端存储网上有很多教程,我这里也简单提供一份

同时使用 rclone 的一大好处是 rclone 的配置可以通过直接复制配置文件来迁移。


教程

安装

使用以下命令安装

1
bash <(curl -fsSL https://raw.githubusercontent.com/llleixx/backup-tool/master/install.sh)

安装

在终端中输入 but 或者 backup-tool 即可进入主菜单。

同时高级选项中也提供 rclone 安装:

rclone 安装

添加备份配置

然后,输入 1 添加备份配置。

备份配置

其中,rclone:onedrive:backup-test 中的 rclone:onedrive 代表使用 rclone 名为 onedrive 的后端存储配置(具体后端存储配置名字可以使用 rclone listremotes 查看;不懂 rclone 挂载的话可以参考网上其他教程,或者这个),backup-test 代表使用该存储中的 backup-test 文件夹作为备份仓库(该文件可以不存在,这种情况会自动创建文件夹并初始化为备份仓库)。

(🔔如果使用 rclone 的某个后端存储配置作为备份仓库,请首先确保 rclone 配置正确,例如使用 rclone lsd <remote> 验证是否配置成功。

*-*-* 01:30:00 Asia/Shanghai 是 systemservice OnCalendar 的语法,类似于 cron 表达式。*-*-* 代表每年每月每日(不对日期限制),01:30:00 代表凌晨一点半,Asia/Shanghai 代表东八区(如果不加时区则是机器默认时区),注意具体备份开始时间会有随机 15min 内的时延(一定程度上防止多个备份任务同时进行。如果有多个备份任务,也请注意手动错开时间)

保留天数代表在最近 $n$ 天中,保留每天的最新一份镜像;保留周数代表在最近 $n$ 周中,保留每周最新一份镜像。一份镜像只要满足以上两个条件之一即可保留。输入 0 代表不限制。

/opt/backup/backup_list.txt 该文件指定了需要备份的路径,其内容可以是:

1
2
3
4
5
6
/opt/backup/conf
/opt/backup/backup_list.txt
/etc/nginx/conf.d
/etc/nginx/nginx.conf
/etc/nginx/ssl
/opt/docker

添加通知配置

Telegram

Telegram

其中,Telegram Bot Token 通过 @BotFather 输入 /token 获取(没有 Bot 的话也在这里新建)

Telegram Bot Token

Chat ID 通过 @userinfobot 输入 /start

Chat ID

在高级选项界面下可以进行通知测试:

测试

测试截图

备份成功通知:

成功通知

Email

Email

其中,发件人地址和 SMTP 用户名保持相同即可。

SMTP_PORT 为 587 或 25 时,SMTP_TLS 常设置为 starttlsSMTP_PORT 为 465 时,SMTP_TLS 常设置为 on,具体依据各自 SMTP 服务器而定。

测试通知:

测试通知

备份成功通知:

成功通知

配置迁移

如果有备份配置迁移的需求,在新机器进行同样安装操作,拷贝 /opt/backup/conf 文件夹,然后运行脚本主菜单中的应用备份配置即可。

(🔔注意这里的迁移是指原来的备份任务不再使用情况下的迁移)


backup-tool
https://lllei.top/2025/09/18/backup-tool/
作者
Lei
发布于
2025年9月18日
许可协议