实现功能: - 文件夹和 MySQL 容器数据库备份 - tar.gz 压缩和自动清理旧备份 - systemd 定时任务集成 - 远程一键安装脚本(通过 Gitea 仓库) - 完整的 llmdoc 文档系统 安装方式: bash <(curl -sL https://gitea.bcde.io/wangdefa/docker-backup/raw/branch/main/install.sh) 配置文件位置:/etc/docker-backup/config.yml 命令:docker-backup, docker-backup-cleanup
1.9 KiB
1.9 KiB
备份执行引擎架构
1. 身份识别
- 目的:一个高度可配置的 Docker 备份解决方案,支持文件夹和 MySQL 数据库的备份
- 核心功能:自动备份、日志记录、临时文件管理和备份保留策略
2. 核心组件
bin/backup.sh(主备份脚本):- 负责协调整个备份流程
- 主要功能包括依赖检查、配置加载、文件备份、数据库备份和清理
3. 执行流程(LLM 检索图)
备份执行流程遵循以下关键步骤:
-
依赖检查:
check_dependencies()- 验证所需工具 (yq, tar, gzip, docker)
- 如缺少依赖,脚本将终止执行
-
配置加载:
load_config()- 读取
/etc/docker-backup/config.yml - 配置备份输出目录、前缀和保留策略
- 读取
-
临时目录准备
- 使用
mktemp创建唯一临时目录 - 注册清理
trap,确保资源释放
- 使用
-
文件夹备份:
backup_folders()- 支持多源目录备份
- 使用
tar打包 - 可配置排除规则
-
数据库备份:
backup_mysql()- 通过
docker exec调用mysqldump - 支持全库或指定库备份
- 使用
gzip压缩
- 通过
-
备份合并:
merge_backups()- 合并文件夹和数据库备份
- 生成时间戳文件名
- 输出单个
.tar.gz文件
-
备份清理:
cleanup_old_backups()- 按配置的保留天数清理旧备份
4. 设计原理
- 模块化:每个功能封装为独立函数
- 可配置性:通过 YAML 文件灵活配置
- 错误处理:严格的错误捕获和日志记录
- 安全性:最小权限原则,临时文件自动清理
5. 关键配置点
- 备份源目录
- 数据库备份范围
- 输出目录和文件前缀
- 日志配置
- 备份保留策略
6. 局限性和注意事项
- 依赖外部工具(yq, docker, tar, gzip)
- 需要正确配置 MySQL 容器访问权限
- 备份过程中需要足够的临时存储空间