# 备份执行引擎架构 ## 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 容器访问权限 - 备份过程中需要足够的临时存储空间