备份Docker

  • 备份脚本
bash 复制代码
#!/bin/bash
PROJ_DIR="/home/proj/HelloProj"
BACKUP_DIR="/home/chenph/docker-backup/$(date +%Y%m%d_%H%M%S)"

mkdir -p $BACKUP_DIR
cd $PROJ_DIR

echo "=== 备份 HelloProj ==="
echo "项目: $PROJ_DIR"
echo "备份: $BACKUP_DIR"

# 1. 备份 compose 文件
echo "[1/2] 备份配置..."
cp docker-compose.yml $BACKUP_DIR/
cp -r key nginx.conf superset_config.py $BACKUP_DIR/ 2>/dev/null
echo "  ✓ 配置文件"

# 2. 备份数据目录(关键!)
echo "[2/2] 备份数据目录..."

# 列出所有 bind mount 的本地目录
for dir in \
    app \
    mosquitto/config mosquitto/data \
    metabase-data \
    redash-data \
    gitea-data \
    jenkins-data \
    redisdata \
    superset_data \
    qdrant_storage; do
    
    if [ -d "$dir" ]; then
        size=$(du -sm $dir 2>/dev/null | cut -f1)
        echo "  打包: $dir (${size}MB)"
        
        # 保持目录结构打包
        tar czf $BACKUP_DIR/${dir//\//_}.tar.gz $dir
    else
        echo "  跳过: $dir (不存在)"
    fi
done

# 生成恢复脚本
cat > $BACKUP_DIR/restore.sh << 'EOF'
#!/bin/bash
DIR=$(dirname $0)
cd "$DIR"

echo "=== 恢复 HelloProj ==="

# 解压所有数据
echo "[1/2] 解压数据..."
for f in *.tar.gz; do
    echo "  解压: $f"
    tar xzf "$f"
done

# 移动配置文件到正确位置
mv key nginx.conf superset_config.py ../ 2>/dev/null || true

echo "[2/2] 启动服务..."
docker compose up -d

echo "=== 完成 ==="
echo "注意:确认配置文件路径是否正确"
EOF
chmod +x $BACKUP_DIR/restore.sh

chown -R chenph:chenph /home/chenph/docker-backup

echo ""
echo "=== 备份完成 ==="
echo "位置: $BACKUP_DIR"
echo "总大小: $(du -sh $BACKUP_DIR | cut -f1)"
echo ""
echo "内容清单:"
ls -lh $BACKUP_DIR/
  • 修改权限
bash 复制代码
# 1. 删除原来的脚本(如果存在)
rm -f /home/chenph/backup-docker.sh

# 2. 创建新脚本
nano /home/chenph/backup-docker.sh

# 3. 赋权限
chmod +x /home/chenph/backup-docker.sh

# 4. 运行
sudo /home/chenph/backup-docker.sh
  • 输出
bash 复制代码
root@iv-yds1fiuww0bw80bhehin:/home/proj/HelloProj# sudo /home/proj/HelloProj/backup-docker.sh
=== 备份 HelloProj ===
项目: /home/proj/HelloProj
备份: /home/chenph/docker-backup/20260319_193334
[1/2] 备份配置...
  ✓ 配置文件
[2/2] 备份数据目录...
  打包: app (1MB)
  打包: mosquitto/config (1MB)
  打包: mosquitto/data (1MB)
  打包: metabase-data (15MB)
  打包: redash-data (1MB)
  打包: gitea-data (2MB)
  打包: jenkins-data (319MB)
  打包: redisdata (4MB)
  打包: superset_data (92MB)
  打包: qdrant_storage (79MB)

=== 备份完成 ===
位置: /home/chenph/docker-backup/20260319_193334
总大小: 320M

内容清单:
total 320M
-rw-r--r-- 1 chenph chenph 2.1K Mar 19 19:33 app.tar.gz
-rw-r--r-- 1 chenph chenph 4.7K Mar 19 19:33 docker-compose.yml
-rw-r--r-- 1 chenph chenph  51K Mar 19 19:33 gitea-data.tar.gz
-rw-r--r-- 1 chenph chenph 243M Mar 19 19:33 jenkins-data.tar.gz
drwxr-xr-x 2 chenph chenph 4.0K Mar 19 19:33 key
-rw-r--r-- 1 chenph chenph 4.1M Mar 19 19:33 metabase-data.tar.gz
-rw-r--r-- 1 chenph chenph  474 Mar 19 19:33 mosquitto_config.tar.gz
-rw-r--r-- 1 chenph chenph  262 Mar 19 19:33 mosquitto_data.tar.gz
-rw-r--r-- 1 chenph chenph 2.0K Mar 19 19:33 nginx.conf
-rw-r--r-- 1 chenph chenph  63M Mar 19 19:33 qdrant_storage.tar.gz
-rw-r--r-- 1 chenph chenph  116 Mar 19 19:33 redash-data.tar.gz
-rw-r--r-- 1 chenph chenph 177K Mar 19 19:33 redisdata.tar.gz
-rwxr-xr-x 1 chenph chenph  417 Mar 19 19:33 restore.sh
-rw-r--r-- 1 chenph chenph 1.2K Mar 19 19:33 superset_config.py
-rw-r--r-- 1 chenph chenph  11M Mar 19 19:33 superset_data.tar.gz
相关推荐
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工3 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
Alsn863 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
酣大智3 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_3 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉3 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
AC赳赳老秦3 天前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw
2601_961875243 天前
决战申论100题2026|最新|范文
linux·容器·centos·debian·ssh·fabric·vagrant