#!/usr/bin/env sh set -eu BACKUP_DIR="${BACKUP_DIR:-./backups/$(date +%Y%m%d-%H%M%S)}" MYSQL_CONTAINER="${MYSQL_CONTAINER:-clover-mysql-1}" MONGO_CONTAINER="${MONGO_CONTAINER:-clover-mongo-1}" UPLOADS_DIR="${UPLOADS_DIR:-/app/uploads}" mkdir -p "$BACKUP_DIR" if [ -z "${MYSQL_USER:-}" ] || [ -z "${MYSQL_PASSWORD:-}" ] || [ -z "${MYSQL_DB:-}" ]; then echo "MYSQL_USER/MYSQL_PASSWORD/MYSQL_DB must be set" >&2 exit 1 fi echo "[1/3] dump mysql -> $BACKUP_DIR/mysql.sql.gz" docker exec "$MYSQL_CONTAINER" sh -c "mysqldump -u$MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DB" | gzip > "$BACKUP_DIR/mysql.sql.gz" gzip -t "$BACKUP_DIR/mysql.sql.gz" echo "[2/3] dump mongo -> $BACKUP_DIR/mongo.archive.gz" docker exec "$MONGO_CONTAINER" sh -c "mongodump --archive --gzip --db clover_trace" > "$BACKUP_DIR/mongo.archive.gz" gzip -t "$BACKUP_DIR/mongo.archive.gz" || true echo "[3/3] archive uploads -> $BACKUP_DIR/uploads.tgz" tar -czf "$BACKUP_DIR/uploads.tgz" "$UPLOADS_DIR" echo "backup completed: $BACKUP_DIR"