备份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
相关推荐
桌面运维家1 小时前
理解 Linux Front Page:构建动态Web首页指南
linux·运维·服务器
toooooop82 小时前
linux常用命令nano和vim有啥区别
linux·运维·vim
春日见2 小时前
端到端自动驾驶技术路线(E2E)
人工智能·机器学习·docker·架构·机器人·自动驾驶·汽车
骥龙2 小时前
第四篇:部署阶段安全加固——从裸奔到生产级防护
运维·网络·人工智能·安全
Du_chong_huan2 小时前
6.1 服务器概览
运维·服务器
鹏大师运维2 小时前
统信UOS上使用WPS PDF独立版
linux·运维·windows·pdf·wps·统信uos·wine
CDN3602 小时前
游戏服防攻击方案:360CDN SDK 游戏盾接入与效果
运维·游戏
wanhengidc2 小时前
服务器对于企业的作用
大数据·运维·服务器·分布式
暴力求解2 小时前
Linux---进程间通信
linux·运维·服务器