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
This commit is contained in:
Wang Defa
2025-12-25 15:02:07 +08:00
commit 4d00283654
19 changed files with 2553 additions and 0 deletions

View File

@@ -0,0 +1,81 @@
# 如何配置备份
## 准备工作
安装后,配置文件位于 `/etc/docker-backup/config.yml`
1. **编辑配置文件**
```bash
sudo vi /etc/docker-backup/config.yml
```
2. **基础备份配置**
编辑 `backup` 区块:
```yaml
backup:
output_dir: "/path/to/backup/destination" # 指定备份存储位置
prefix: "mybackup" # 可选,自定义备份文件前缀
retention:
enabled: true # 启用自动清理
keep_days: 7 # 保留最近 7 天备份
```
3. **配置文件夹备份**
```yaml
folders:
enabled: true
sources:
- "/var/lib/docker/volumes"
- "/opt/important/data"
excludes:
- "*/logs" # 排除日志目录
- "*/.git" # 排除 Git 仓库
```
4. **配置 MySQL 备份**
```yaml
mysql:
enabled: true
container_name: "mysql_container"
username: "root"
password: "your_password"
databases:
- "database1" # 指定具体数据库
# 或使用 "all" 备份所有数据库
```
5. **日志和通知**
```yaml
logging:
enabled: true
log_file: "/var/log/docker-backup.log"
level: "INFO"
notification:
enabled: true
method: "webhook"
webhook_url: "https://example.com/webhook"
```
## 验证配置
运行以下命令测试备份功能:
```bash
docker-backup
```
查看配置是否生效:
```bash
# 查看备份日志
sudo journalctl -u docker-backup.service -f
# 查看生成的备份文件
docker-backup-cleanup --list
```
## 常见问题
- 确保所有路径正确
- 检查 MySQL 容器名称和凭据
- 权限问题:确保脚本有足够权限访问备份源
- 配置文件权限:`sudo chmod 600 /etc/docker-backup/config.yml`

View File

@@ -0,0 +1,101 @@
# 如何安装 Docker Backup
## 1. 系统要求
- **操作系统**Linux推荐 Ubuntu, Debian, CentOS, RHEL, Fedora
- **权限**:需要 root/sudo 权限
- **预安装依赖**
- Docker
- Bash (4.0+)
- 网络工具wget 或 curl
## 2. 一键远程安装
### 2.1 执行安装命令
使用以下命令直接从远程仓库安装:
```bash
bash <(curl -sL https://gitea.bcde.io/wangdefa/docker-backup/raw/branch/main/install.sh)
```
安装脚本会自动完成:
- 检测操作系统类型
- 安装依赖工具yq 等)
- 从远程仓库下载脚本文件
- 安装到系统目录(`/usr/local/bin``/etc/docker-backup`
- 创建配置文件模板
- 配置并启动 systemd 服务
- 启动定时任务
### 2.2 配置备份
1. 编辑配置文件
```bash
sudo vi /etc/docker-backup/config.yml
```
2. 配置关键参数:
- `output_dir`:备份文件存储位置
- `folders.sources`:需要备份的文件夹列表
- `mysql.container_name`MySQL 容器名称
- `retention.keep_days`:备份保留天数
## 3. 高级安装选项
### 3.1 自定义服务名称
```bash
# 为服务指定自定义名称
SERVICE_NAME=my-docker-backup bash <(curl -sL https://gitea.bcde.io/wangdefa/docker-backup/raw/branch/main/install.sh)
```
### 3.2 自定义执行计划
```bash
# 每天早上 6 点执行备份
SCHEDULE="*-*-* 06:00:00" bash <(curl -sL https://gitea.bcde.io/wangdefa/docker-backup/raw/branch/main/install.sh)
# 支持的计划格式:
# "daily" 每天
# "*-*-* 02:00:00" 每天凌晨 2 点
# "Mon *-*-* 02:00:00" 每周一凌晨 2 点
# "*-*-01 02:00:00" 每月 1 号
# "hourly" 每小时
```
## 4. 验证安装
1. 检查服务状态
```bash
systemctl status docker-backup.timer
```
2. 手动测试备份
```bash
docker-backup
```
3. 查看备份文件
```bash
docker-backup-cleanup --list
```
## 5. 卸载
```bash
# 卸载 Docker Backup
bash <(curl -sL https://gitea.bcde.io/wangdefa/docker-backup/raw/branch/main/install.sh) --uninstall
```
## 6. 常见问题
- **权限问题**:确保使用 `sudo` 运行脚本
- **依赖缺失**:脚本会自动尝试安装依赖
- **配置错误**:仔细检查 `backup.yml` 配置
## 7. 建议
- 首次安装后,建议立即测试备份功能
- 定期检查备份日志:`journalctl -u docker-backup.service`
- 根据实际需求调整备份策略

View File

@@ -0,0 +1,60 @@
# 如何管理 Docker 备份 Systemd 服务
## 1. 服务状态检查
1. **查看服务状态**
```bash
systemctl status docker-backup.service
```
2. **查看 Timer 状态**
```bash
systemctl status docker-backup.timer
```
## 2. 启动和停止服务
1. **启动服务**
```bash
systemctl start docker-backup.service
systemctl enable docker-backup.timer # 开机自启
```
2. **停止服务**
```bash
systemctl stop docker-backup.service
systemctl disable docker-backup.timer # 取消开机自启
```
## 3. 修改定时计划
1. **编辑 Timer 配置**
使用 `systemctl edit docker-backup.timer` 或直接编辑 `/etc/systemd/system/docker-backup.timer`
2. **常见调度示例**
- 每天凌晨 2 点:`OnCalendar=*-*-* 02:00:00`
- 每周一凌晨 2 点:`OnCalendar=Mon *-*-* 02:00:00`
- 每月 1 号凌晨 2 点:`OnCalendar=*-*-01 02:00:00`
3. **重载配置**
```bash
systemctl daemon-reload
systemctl restart docker-backup.timer
```
## 4. 查看服务日志
1. **查看最近日志**
```bash
journalctl -u docker-backup.service
```
2. **实时监控日志**
```bash
journalctl -f -u docker-backup.service
```
3. **查看指定时间范围日志**
```bash
journalctl -u docker-backup.service --since "1 hour ago"
```

View File

@@ -0,0 +1,114 @@
# 如何执行备份
## 前提条件
1. 已安装必要的工具:
- Docker
- yq
- tar
- gzip
## 配置备份
1. **编辑配置文件**`/etc/docker-backup/config.yml`
```yaml
# 备份基本设置
backup:
output_dir: /path/to/backup # 备份文件输出目录
prefix: docker-backup # 备份文件名前缀
retention:
enabled: true # 是否启用自动清理
keep_days: 30 # 保留最近 30 天的备份
# 文件夹备份配置
folders:
enabled: true # 是否启用文件夹备份
sources: # 要备份的文件夹列表
- /path/to/folder1
- /path/to/folder2
excludes: # 可选:排除的文件/目录模式
- '*.log'
- '.git/'
# MySQL 备份配置
mysql:
enabled: true # 是否启用 MySQL 备份
container_name: mysql_container
username: backup_user
password: backup_password
databases: # 要备份的数据库
- database1
- database2
# 或使用 'all' 备份所有数据库
# 日志配置
logging:
enabled: true
log_file: /path/to/backup.log
```
## 执行备份
1. **手动备份**
```bash
docker-backup
```
2. **自动备份**(使用 systemd timer安装时已配置
```bash
# 查看定时任务状态
systemctl status docker-backup.timer
# 查看下次执行时间
systemctl list-timers docker-backup.timer
# 立即触发一次备份
systemctl start docker-backup.service
```
3. **查看备份结果**
```bash
# 列出所有备份文件
docker-backup-cleanup --list
# 查看备份日志
sudo journalctl -u docker-backup.service -n 50
```
## 故障排查
1. **常见错误**
- 检查配置文件权限和路径
- 验证 Docker 容器状态
- 查看日志文件 `log_file`
2. **依赖检查**
```bash
# 脚本会自动检查,但可手动验证
which yq tar gzip docker
```
## 备份恢复
1. 解压备份文件
```bash
tar -xzvf backup-YYYYMMDD-HHMMSS.tar.gz
```
2. 恢复文件夹
```bash
tar -xzvf folders.tar.gz -C /restore/path
```
3. 恢复 MySQL 数据库
```bash
# 假设使用 Docker MySQL 容器
zcat mysql.sql.gz | docker exec -i mysql_container mysql -u root -p
```
## 注意事项
- 备份前关闭正在写入的应用
- 定期测试备份和恢复流程
- 保护备份文件和配置文件的安全