- 备份脚本
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