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:
81
llmdoc/guides/how-to-configure-backups.md
Normal file
81
llmdoc/guides/how-to-configure-backups.md
Normal 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`
|
||||
101
llmdoc/guides/how-to-install.md
Normal file
101
llmdoc/guides/how-to-install.md
Normal 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`
|
||||
- 根据实际需求调整备份策略
|
||||
60
llmdoc/guides/how-to-manage-systemd-service.md
Normal file
60
llmdoc/guides/how-to-manage-systemd-service.md
Normal 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"
|
||||
```
|
||||
114
llmdoc/guides/how-to-perform-backup.md
Normal file
114
llmdoc/guides/how-to-perform-backup.md
Normal 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
|
||||
```
|
||||
|
||||
## 注意事项
|
||||
|
||||
- 备份前关闭正在写入的应用
|
||||
- 定期测试备份和恢复流程
|
||||
- 保护备份文件和配置文件的安全
|
||||
Reference in New Issue
Block a user