#!/usr/bin/env bash set -euo pipefail echo "StellaOps Compose Backup" echo "This will create a tar.gz of Mongo, MinIO (object-store), and Redis data volumes." read -rp "Proceed? [y/N] " ans [[ ${ans:-N} =~ ^[Yy]$ ]] || { echo "Aborted."; exit 1; } TS=$(date -u +%Y%m%dT%H%M%SZ) OUT_DIR=${BACKUP_DIR:-backups} mkdir -p "$OUT_DIR" docker compose ps >/dev/null echo "Pausing worker containers for consistency..." docker compose pause scanner-worker scheduler-worker taskrunner-worker || true echo "Backing up volumes..." docker run --rm \ -v stellaops-mongo:/data/db:ro \ -v stellaops-minio:/data/minio:ro \ -v stellaops-redis:/data/redis:ro \ -v "$PWD/$OUT_DIR":/out \ alpine sh -c "cd / && tar czf /out/stellaops-backup-$TS.tar.gz data" docker compose unpause scanner-worker scheduler-worker taskrunner-worker || true echo "Backup written to $OUT_DIR/stellaops-backup-$TS.tar.gz"