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