Skip to content

Commit 247d04a

Browse files
committed
feat: Add interactive commands
1 parent d3d5408 commit 247d04a

File tree

4 files changed

+1016
-5
lines changed

4 files changed

+1016
-5
lines changed

README.md

Lines changed: 191 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,36 @@ curl -fsSL https://raw.githubusercontent.com/shuguangnet/dcoker_backup_script/ma
1111

1212
**GitHub仓库**: https://github.com/shuguangnet/dcoker_backup_script
1313

14+
15+
16+
17+
18+
**就是这么简单!** 🎉
19+
20+
备份
21+
![image](https://minio.933999.xyz/images-lankong/lankong/2025/07/26/6884da1341465.jpg)
22+
23+
恢复
24+
![image](https://minio.933999.xyz/images-lankong/lankong/2025/07/26/6884da159e26a.jpg)
25+
26+
定时备份
27+
![image](https://minio.933999.xyz/images-lankong/lankong/2025/07/26/6884db36378d6.png)
28+
29+
30+
31+
## 🖥️ 交互式菜单
32+
33+
安装完成后,你可以使用交互式菜单进行所有操作:
34+
35+
```bash
36+
# 启动交互式菜单
37+
docker-backup-menu
38+
```
39+
40+
41+
42+
**就是这么简单!** 🎉
43+
1444
## 🚀 功能特性
1545

1646
### 核心功能
@@ -19,6 +49,7 @@ curl -fsSL https://raw.githubusercontent.com/shuguangnet/dcoker_backup_script/ma
1949
- **镜像备份**:可选择性备份容器镜像(完整备份模式)
2050
- **一键恢复**:在新服务器上快速恢复容器和数据
2151
- **增量支持**:智能识别和备份变更的数据
52+
- **交互式菜单**:图形化操作界面,新手友好
2253

2354
### 高级特性
2455
- **灵活配置**:支持配置文件和命令行参数
@@ -28,6 +59,8 @@ curl -fsSL https://raw.githubusercontent.com/shuguangnet/dcoker_backup_script/ma
2859
- **安全加密**:支持GPG加密备份文件
2960
- **远程存储**:支持备份到远程服务器
3061
- **通知机制**:支持邮件、Webhook、Slack通知
62+
- **定时备份**:支持cron定时任务自动备份
63+
- **智能清理**:自动清理过期备份文件
3164

3265
## 📋 系统要求
3366

@@ -164,6 +197,12 @@ sudo chown $(whoami):$(whoami) /var/backups/docker
164197

165198
如果你使用了一键安装脚本,系统会自动创建全局快捷命令:
166199

200+
#### 交互式菜单(推荐新手)
201+
```bash
202+
# 启动交互式菜单
203+
docker-backup-menu
204+
```
205+
167206
#### 备份操作
168207
```bash
169208
# 备份单个容器
@@ -175,6 +214,9 @@ docker-backup nginx mysql redis
175214
# 备份所有运行中的容器
176215
docker-backup -a
177216

217+
# 备份所有容器(排除镜像,节省空间)
218+
docker-backup -a --exclude-images
219+
178220
# 完整备份(包含镜像)
179221
docker-backup -f nginx
180222

@@ -207,6 +249,12 @@ journalctl -u docker-backup.service
207249

208250
# 手动触发备份
209251
systemctl start docker-backup.service
252+
253+
# 清理旧备份文件
254+
docker-cleanup 30
255+
256+
# 查看备份统计
257+
docker-cleanup --preview 30
210258
```
211259

212260
### 📋 手动模式(脚本直接使用)
@@ -269,6 +317,46 @@ systemctl start docker-backup.service
269317
./docker-restore.sh --no-volumes --no-mounts /path/to/backup/nginx_20231201_120000
270318
```
271319

320+
## 🖥️ 交互式菜单详解
321+
322+
### 菜单功能概览
323+
324+
运行 `docker-backup-menu` 后,你将看到一个包含18个选项的交互式菜单:
325+
326+
#### 📦 备份操作 (选项1-6)
327+
- **选项1**: 备份所有运行中的容器
328+
- **选项2**: 备份所有容器(排除镜像)
329+
- **选项3**: 备份所有容器(排除数据卷)
330+
- **选项4**: 备份所有容器(排除挂载点)
331+
- **选项5**: 备份所有容器(仅配置和日志)
332+
- **选项6**: 完整备份所有容器(包含镜像)
333+
334+
#### 🎯 指定容器备份 (选项7-10)
335+
- **选项7**: 备份指定容器
336+
- **选项8**: 备份指定容器(排除镜像)
337+
- **选项9**: 备份指定容器(排除数据卷)
338+
- **选项10**: 备份指定容器(排除挂载点)
339+
340+
#### 🔄 恢复操作 (选项11-12)
341+
- **选项11**: 恢复容器(交互式向导)
342+
- **选项12**: 列出可恢复的备份
343+
344+
#### 🧹 维护操作 (选项13-15)
345+
- **选项13**: 清理旧备份文件
346+
- **选项14**: 查看备份统计信息
347+
- **选项15**: 检查系统状态
348+
349+
#### ⚙️ 配置和帮助 (选项16-18)
350+
- **选项16**: 编辑配置文件
351+
- **选项17**: 查看帮助信息
352+
- **选项18**: 查看版本信息
353+
354+
### 菜单使用示例
355+
356+
![image](https://minio.933999.xyz/images-lankong/lankong/2025/07/26/6884da1341465.jpg)
357+
358+
![image](https://minio.933999.xyz/images-lankong/lankong/2025/07/26/6884da159e26a.jpg)
359+
272360
## ⚙️ 配置选项
273361

274362
### 主要配置参数
@@ -369,13 +457,24 @@ ssh user@new-server "cd /tmp && ./docker-restore.sh nginx_20231201_120000"
369457

370458
### 场景2:定期自动备份
371459

460+
#### 方法1:使用系统服务(推荐)
461+
```bash
462+
# 启用定时备份服务
463+
sudo systemctl enable docker-backup.timer
464+
sudo systemctl start docker-backup.timer
465+
466+
# 查看服务状态
467+
sudo systemctl status docker-backup.timer
468+
```
469+
470+
#### 方法2:自定义cron任务
372471
```bash
373472
# 创建定时任务脚本
374473
cat > /usr/local/bin/docker-auto-backup.sh << 'EOF'
375474
#!/bin/bash
376475
cd /opt/docker-backup
377-
./docker-backup.sh -a -o /var/backups/docker
378-
find /var/backups/docker -type d -mtime +7 -exec rm -rf {} \;
476+
./docker-backup.sh -a --exclude-images -o /var/backups/docker
477+
docker-cleanup 30 # 清理30天前的备份
379478
EOF
380479

381480
chmod +x /usr/local/bin/docker-auto-backup.sh
@@ -384,6 +483,33 @@ chmod +x /usr/local/bin/docker-auto-backup.sh
384483
echo "0 2 * * * /usr/local/bin/docker-auto-backup.sh" | sudo crontab -
385484
```
386485

486+
#### 方法3:rsync同步到远程存储
487+
```bash
488+
# 创建备份同步脚本
489+
cat > /usr/local/bin/docker-backup-sync.sh << 'EOF'
490+
#!/bin/bash
491+
BACKUP_DIR="/var/backups/docker"
492+
REMOTE_HOST="backup-server.company.com"
493+
REMOTE_USER="backup"
494+
REMOTE_PATH="/backups/docker"
495+
496+
# 执行备份
497+
cd /opt/docker-backup
498+
./docker-backup.sh -a --exclude-images -o $BACKUP_DIR
499+
500+
# 同步到远程服务器
501+
rsync -avz --delete $BACKUP_DIR/ $REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH/
502+
503+
# 清理本地旧备份
504+
docker-cleanup 7 # 保留7天本地备份
505+
EOF
506+
507+
chmod +x /usr/local/bin/docker-backup-sync.sh
508+
509+
# 添加到crontab(每天凌晨3点备份并同步)
510+
echo "0 3 * * * /usr/local/bin/docker-backup-sync.sh" | sudo crontab -
511+
```
512+
387513
### 场景3:生产环境迁移
388514

389515
```bash
@@ -555,11 +681,71 @@ WEBHOOK_TIMEOUT=30
555681

556682
## 🔄 定期维护
557683

684+
### 定时备份最佳实践
685+
686+
#### 1. 设置定时备份
687+
```bash
688+
# 启用系统定时服务
689+
sudo systemctl enable docker-backup.timer
690+
sudo systemctl start docker-backup.timer
691+
692+
# 查看下次执行时间
693+
sudo systemctl list-timers docker-backup.timer
694+
```
695+
696+
#### 2. 配置rsync同步
697+
```bash
698+
# 设置SSH密钥认证
699+
ssh-keygen -t rsa -b 4096 -f ~/.ssh/backup_key
700+
ssh-copy-id -i ~/.ssh/backup_key.pub backup@backup-server
701+
702+
# 创建同步脚本
703+
cat > /usr/local/bin/docker-backup-sync.sh << 'EOF'
704+
#!/bin/bash
705+
BACKUP_DIR="/var/backups/docker"
706+
REMOTE_HOST="backup-server.company.com"
707+
REMOTE_USER="backup"
708+
REMOTE_PATH="/backups/docker"
709+
SSH_KEY="~/.ssh/backup_key"
710+
711+
# 执行备份
712+
cd /opt/docker-backup
713+
./docker-backup.sh -a --exclude-images -o $BACKUP_DIR
714+
715+
# 同步到远程服务器
716+
rsync -avz --delete -e "ssh -i $SSH_KEY" $BACKUP_DIR/ $REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH/
717+
718+
# 清理本地旧备份
719+
docker-cleanup 7 # 保留7天本地备份
720+
721+
# 发送通知
722+
echo "Docker backup completed at $(date)" | mail -s "Backup Status" [email protected]
723+
EOF
724+
725+
chmod +x /usr/local/bin/docker-backup-sync.sh
726+
```
727+
728+
#### 3. 添加到crontab
729+
```bash
730+
# 编辑crontab
731+
crontab -e
732+
733+
# 添加以下内容
734+
# 每天凌晨2点执行备份
735+
0 2 * * * /usr/local/bin/docker-backup-sync.sh
736+
737+
# 每周日凌晨3点清理远程旧备份
738+
0 3 * * 0 ssh backup@backup-server "find /backups/docker -type d -mtime +30 -exec rm -rf {} \;"
739+
```
740+
558741
### 清理旧备份
559742
```bash
560743
# 手动清理30天前的备份
561744
find /var/backups/docker -type d -mtime +30 -exec rm -rf {} \;
562745

746+
# 使用清理工具
747+
docker-cleanup 30
748+
563749
# 自动清理(在配置文件中设置)
564750
BACKUP_RETENTION_DAYS=30
565751
```
@@ -596,7 +782,9 @@ COMPRESSION_FORMAT="gzip" # 最快
596782
curl -fsSL https://raw.githubusercontent.com/shuguangnet/dcoker_backup_script/main/install.sh | sudo bash
597783

598784
# 立即使用
599-
docker-backup -a # 备份所有容器
785+
docker-backup-menu # 启动交互式菜单
786+
docker-backup -a # 备份所有容器
787+
docker-cleanup 30 # 清理30天前的备份
600788
```
601789

602790
### 获取帮助

0 commit comments

Comments
 (0)