一款基于 Rust 开发的数据库备份工具,支持单实例 PostgreSQL/MySQL 数据库的自动备份、加密、压缩,并可将备份文件上传至腾讯云 COS 或阿里云 OSS或兼容 S3 协议的其他云存储。
开发动机是本人维护着很多单体服务分布在各个云服务器上,每个单体服务都使用各自的数据库实例,因为甲方预算原因没有配置数据库主从备份。 但又有备份的需求,所以只好写个工具使用数据库自带的 dump 工具备份,再加密压缩上传到云存储。
- 支持 PostgreSQL\MySql 数据库自动备份
- 备份文件自动加密、压缩
- 一键上传备份到腾讯云 COS\阿里云 OSS\兼容S3协议的其他云存储
- 支持备份文件的批量上传、批量删除、列表查看
- 支持自定义配置文件
- 支持加密配置文件以防泄漏关键配置
- 支持 webhook 通知进度消息
请确保服务器已安装 7z。
安装命令(Debian/Ubuntu):
sudo apt install p7zip-full- 从 release 页面 下载可执行文件的 zip 包。
- 解压后,修改其中的
config.yaml配置文件为正确的配置。
-
加密配置文件
./backupdbtool --config config.yaml encrypt -d encrypted.yaml -p password
加密完成并测试成功后可删除原始
config.yaml文件 -
备份指定数据库
./backupdbtool --config config.yaml backup <database_name>
使用加密配置文件
./backupdbtool --config encrypted.yaml -p password backup <database_name>
-
上传所有待上传备份文件
./backupdbtool --config config.yaml upload --all
使用加密配置文件
./backupdbtool --config encrypted.yaml -p password upload --all
-
上传单个备份文件
./backupdbtool --config config.yaml upload --file /path/to/filename.ext
使用加密配置文件
./backupdbtool --config encrypted.yaml -p password upload --file /path/to/filename.ext
-
删除所有两天前的备份以减少云存储成本
./backupdbtool --config config.yaml delete --all
使用加密配置文件
./backupdbtool --config encrypted.yaml -p password delete --all
-
删除单个云存储文件
./backupdbtool --config config.yaml delete --key key
使用加密配置文件
./backupdbtool --config encrypted.yaml -p password delete --key key
key 为云存储中的完整路径,比如想删除下方 list 中的 config.yaml 则 key 为 db/config.yaml。
完整示例: ./backupdbtool --config config.yaml delete --key db/config.yaml。
-
列出所有备份文件
./backupdbtool --config config.yaml list
使用加密配置文件
./backupdbtool --config encrypted.yaml -p password list
-
每日凌晨 2 点自动备份数据库
0 2 * * * /path/to/backupdbtool --config /path/to/config.yaml backup <database_name>
使用加密配置文件
0 2 * * * /path/to/backupdbtool --config /path/to/encrypted.yaml -p password backup <database_name>
-
每日凌晨 2:30 上传所有待上传备份
30 2 * * * /path/to/backupdbtool --config /path/to/config.yaml upload --all
使用加密配置文件
30 2 * * * /path/to/backupdbtool --config /path/to/encrypted.yaml -p password upload --all
-
每周日凌晨 3 点删除所有两天前的备份以减少云存储成本
0 3 * * 0 /path/to/backupdbtool --config /path/to/config.yaml delete --all
使用加密配置文件
0 3 * * 0 /path/to/backupdbtool --config /path/to/encrypted.yaml -p password delete --all
请将
/path/to/backupdbtool和/path/to/config.yaml替换为实际路径,<database_name>替换为目标数据库名称。
如有疑问,请联系开发者。

