Files
docker-backup/llmdoc/architecture/backup-engine-architecture.md
Wang Defa 4d00283654 feat: 实现 Docker 备份系统,支持远程一键安装
实现功能:
- 文件夹和 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
2025-12-25 15:02:07 +08:00

1.9 KiB
Raw Permalink Blame History

备份执行引擎架构

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 容器访问权限
  • 备份过程中需要足够的临时存储空间