docker自动备份与恢复脚本

🎯 项目简介

还在为Docker容器迁移而头疼吗?手动导出镜像、备份数据卷、记录配置参数...太繁琐了!

搓了一个一键式Docker容器备份恢复工具,能够完整备份容器的:

  • ✅ 容器配置(端口映射、环境变量、启动命令等)
  • ✅ 数据卷内容
  • ✅ 本地挂载目录
  • ✅ 容器镜像
  • ✅ 运行日志

最重要的是:备份后可以在任何服务器上完全自动化恢复,无需手动配置!


🚀 快速上手(30秒)

一键安装

curl -fsSL https://raw.githubusercontent.com/shuguangnet/docker_backup_script/main/install.sh | sudo bash

立即使用

# 备份所有运行中的容器
docker-backup -a

# 备份所有运行中的容器(排除镜像)
PS:排除镜像也可以在backup.conf进行配置
docker-backup --exclude-images -a

# 备份指定容器
docker-backup -c container_name

# 进入备份目录,一键恢复
安装脚本切换到目录,运行恢复脚本即可恢复
cd /path/to/backup
./restore.sh

🖥️ 交互式菜单

安装完成后,你可以使用交互式菜单进行所有操作:

# 启动交互式菜单
docker-backup-menu

Snipaste_2025-07-27_00-25-51.png


📦 项目地址

🔗 GitHub: https://github.com/shuguangnet/docker_backup_script

⭐ 觉得有用的话给个Star支持一下~


💡 使用场景

🔄 服务器迁移

  • 老服务器要下线?一键备份,新服务器一键恢复
  • 换云服务商?带着整个Docker环境走

🛡️ 数据保护

  • 定期自动备份重要容器
  • 升级前备份,出问题秒恢复

🚀 环境复制

  • 开发环境快速复制到测试环境
  • 生产环境配置快速部署到新节点

📚 学习研究

  • 备份别人分享的容器环境
  • 快速恢复实验环境

📖 详细使用教程

🛠️ 安装方式

方式一:一键安装(推荐)
curl -fsSL https://raw.githubusercontent.com/shuguangnet/docker_backup_script/main/install.sh | sudo bash
方式二:手动安装
git clone https://github.com/shuguangnet/docker_backup_script.git
cd docker_backup_script
sudo ./install.sh

🎮 基本命令

安装完成后,你将拥有以下命令:

# 备份相关
docker-backup -a                    # 备份所有运行容器
docker-backup -c nginx              # 备份指定容器  
docker-backup -c "web db redis"     # 备份多个容器
docker-backup -l                    # 列出可备份的容器

# 恢复相关
docker-restore                      # 交互式恢复向导
# 或直接在备份目录执行 ./restore.sh

# 实用工具
docker-backup -h                    # 查看帮助
docker-cleanup                      # 清理旧备份文件

📂 备份内容详解

每个容器备份包含完整信息:

container_backup_20240126_123456/
├── config/                         # 容器配置
│   ├── container_inspect.json      # 完整容器信息
│   ├── dockerfile                  # 重建用Dockerfile
│   └── docker_run_command.sh       # 原始运行命令
├── volumes/                        # 数据卷备份
│   ├── volume1.tar.gz
│   └── volume2.tar.gz  
├── mounts/                         # 挂载目录备份
│   ├── mount_1/
│   └── mount_2/
├── logs/                           # 容器日志
│   └── container.log
├── container_image.tar.gz          # 容器镜像
├── restore.sh                     # 一键恢复脚本
└── backup_summary.txt             # 备份摘要信息

🔧 高级配置

编辑配置文件 /etc/docker-backup/backup.conf

# 备份存储位置
BACKUP_DIR="/opt/docker-backups"

# 日志级别 (DEBUG, INFO, WARNING, ERROR)  
LOG_LEVEL="INFO"

# 是否备份容器镜像 (true/false)
BACKUP_IMAGES=true

# 备份保留天数
RETENTION_DAYS=30

# 并发备份数量
MAX_PARALLEL=3

📋 实际使用示例

示例1:网站环境迁移
# 旧服务器 - 备份Web环境
docker-backup -c "nginx mysql redis wordpress"

# 打包传输
tar -czf web_backup.tar.gz /tmp/docker-backups/

# 新服务器 - 解压恢复  
tar -xzf web_backup.tar.gz
cd nginx_backup_xxx && ./restore.sh
cd mysql_backup_xxx && ./restore.sh
cd redis_backup_xxx && ./restore.sh  
cd wordpress_backup_xxx && ./restore.sh



![image](https://minio.933999.xyz/images-lankong/lankong/2025/07/26/6884da1341465.jpg)
![image](https://minio.933999.xyz/images-lankong/lankong/2025/07/26/6884da159e26a.jpg)
示例2:定时自动备份
# 添加定时任务
crontab -e

# 每天凌晨2点备份所有容器
0 2 * * * /usr/local/bin/docker-backup -a

# 每周日清理30天前的备份
0 3 * * 0 /usr/local/bin/docker-cleanup

可以设置cron定时备份,然后rsync同步到对应存储空间即可
![image](https://minio.933999.xyz/images-lankong/lankong/2025/07/26/6884db36378d6.png)
示例3:容器升级保险
# 升级前备份
docker-backup -c myapp

# 升级操作
docker pull myapp:latest
docker stop myapp
docker rm myapp
docker run -d --name myapp myapp:latest

# 如果有问题,立即恢复
cd /tmp/docker-backups/myapp_xxx
./restore.sh

🔍 故障排除

常见问题
  1. 权限问题
sudo chmod +x /usr/local/bin/docker-*
  1. jq工具缺失
# Ubuntu/Debian
sudo apt install jq

# CentOS/RHEL  
sudo yum install jq
  1. Docker权限
sudo usermod -aG docker $USER
# 重新登录生效
查看详细日志
# 调试模式运行
LOG_LEVEL=DEBUG docker-backup -c container_name
# 查看系统日志
journalctl -u docker-backup

🌟 特色功能

⚡ 智能备份

  • 自动识别容器依赖关系
  • 增量备份节省空间
  • 并发处理提升速度
  • 🔒 数据完整性

  • MD5校验确保数据完整
  • 备份前后状态对比
  • 详细的备份报告
  • 🎯 精确恢复

  • 一键恢复到任意服务器
  • 自动处理端口冲突
  • 智能镜像拉取
  • 📊 监控管理

  • 备份进度实时显示
  • 存储空间统计
  • 备份历史记录
  • 发表评论

    电子邮件地址不会被公开。 必填项已用*标注