feat(backup): 添加单文件备份功能

- 添加 files 配置节,支持备份多个单独文件
- 实现 backup_files() 函数,处理单文件备份逻辑
- 更新 merge_backups() 函数,支持合并 files 备份
- 更新配置文件示例,添加 files 配置说明
- 更新 README 文档:
  - 添加单文件备份功能说明
  - 添加 files 配置示例
  - 添加单文件恢复详细步骤
  - 更新备份文件结构说明
  - 添加单文件完整性验证方法
  - 添加 v1.3.0 更新日志

使用场景:
- 备份配置文件(如 /etc/nginx/nginx.conf)
- 备份环境变量文件(如 /opt/app/.env)
- 备份其他重要的单个文件

备份结构:
backup.tar.gz
├── folders/folders.tar.gz  # 文件夹备份
├── files/files.tar.gz      # 单文件备份
└── mysql/mysql.sql.gz      # 数据库备份
This commit is contained in:
2025-12-26 13:06:33 +08:00
parent 8d1ad4a642
commit a00314964d
3 changed files with 142 additions and 6 deletions

View File

@@ -5,6 +5,7 @@
## 功能特性
-**文件夹备份**: 打包指定文件夹为 tar.gz 压缩文件
-**单文件备份**: 支持备份多个单独的配置文件(如 .env、config.yml 等)
-**排除目录**: 支持配置需要排除的文件夹和文件模式
-**MySQL 备份**: 备份 MySQL 容器数据库为 sql.gz 压缩文件
-**合并打包**: 将文件夹和数据库备份合并为单个压缩文件
@@ -89,6 +90,14 @@ folders:
- "*/temp"
- "*/cache"
# 单文件备份配置
files:
enabled: true # 是否启用单文件备份
sources: # 需要备份的文件列表
- "/etc/docker-backup/config.yml"
- "/etc/nginx/nginx.conf"
- "/opt/app/.env"
# MySQL 数据库备份配置
mysql:
enabled: true # 是否启用 MySQL 备份
@@ -252,6 +261,8 @@ backup-20250125-143022.tar.gz
backup-20250125-143022.tar.gz
├── folders/
│ └── folders.tar.gz # 文件夹备份
├── files/
│ └── files.tar.gz # 单文件备份
└── mysql/
└── mysql.sql.gz # MySQL 数据库备份
```
@@ -292,7 +303,33 @@ cp -r opt/gitea /tmp/restore/
# 检查无误后再复制到目标位置
```
### 3. 恢复 MySQL 数据库
### 3. 恢复单个文件
```bash
# 解压单文件备份
cd ../files
tar -xzf files.tar.gz
# 查看解压的文件
ls -lh
# 将显示备份时的完整路径etc/docker-backup/config.yml
# 方法一:直接恢复到原位置(会覆盖现有文件)
sudo cp etc/docker-backup/config.yml /etc/docker-backup/
sudo cp etc/nginx/nginx.conf /etc/nginx/
sudo cp opt/app/.env /opt/app/
# 方法二:选择性恢复
# 只恢复需要的文件
sudo cp etc/nginx/nginx.conf /etc/nginx/
# 方法三:恢复到临时目录检查
mkdir -p /tmp/restore-files
cp -r etc /tmp/restore-files/
# 检查无误后再复制到目标位置
```
### 4. 恢复 MySQL 数据库
#### 方法一:恢复到 Docker 容器
@@ -354,7 +391,7 @@ docker exec mysql mysql -uroot -p'your_password' -e "SHOW DATABASES;"
rm /tmp/restore_mysql.sql
```
### 4. 完整恢复示例
### 5. 完整恢复示例
假设需要完整恢复到新服务器:
@@ -389,7 +426,7 @@ ls -lh /opt/gitea/
docker-compose up -d
```
### 5. 恢复注意事项
### 6. 恢复注意事项
⚠️ **重要提示**
@@ -400,7 +437,7 @@ docker-compose up -d
5. **版本兼容**:确保 MySQL 版本兼容(备份和恢复的版本)
6. **磁盘空间**:确保有足够的磁盘空间进行解压和恢复
### 6. 验证备份完整性
### 7. 验证备份完整性
```bash
# 测试 tar.gz 文件完整性
@@ -416,6 +453,11 @@ echo "SQL 备份文件完整"
cd ../folders
tar -tzf folders.tar.gz > /dev/null
echo "文件夹备份完整"
# 测试单文件备份完整性
cd ../files
tar -tzf files.tar.gz > /dev/null
echo "单文件备份完整"
```
## 故障排查
@@ -577,6 +619,12 @@ rclone sync /var/backups/docker-backup/ remote:backup/
## 更新日志
### v1.3.0 (2025-12-26)
- ✨ 新增支持单个文件备份功能files 配置)
- 📝 文档:添加单文件备份和恢复的详细说明
- 🔧 优化:备份文件结构更清晰,支持文件夹、单文件、数据库分类备份
### v1.2.0 (2025-12-25)
- ✨ 新增:支持 `keep_count` 按数量保留备份策略