Files
swarm-zap/scripts/backup-to-minio.sh

55 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
CREDS_FILE="${CREDS_FILE:-$HOME/.openclaw/credentials/minio-zap.env}"
WORKSPACE="${WORKSPACE:-$HOME/.openclaw/workspace}"
STAMP="$(date -u +%Y%m%dT%H%M%SZ)"
PREFIX="${PREFIX:-workspace-backups/$STAMP}"
if [[ ! -f "$CREDS_FILE" ]]; then
echo "Missing creds file: $CREDS_FILE" >&2
exit 1
fi
# shellcheck disable=SC1090
source "$CREDS_FILE"
if [[ -z "${MINIO_ENDPOINT:-}" || -z "${MINIO_ACCESS_KEY:-}" || -z "${MINIO_SECRET_KEY:-}" || -z "${MINIO_BUCKET:-}" ]]; then
echo "Missing required MinIO env vars in $CREDS_FILE" >&2
exit 1
fi
# Backup only durable assistant context files
INCLUDE=(
"MEMORY.md"
"USER.md"
"TOOLS.md"
"HEARTBEAT.md"
"memory"
)
TMPDIR="$(mktemp -d)"
trap 'rm -rf "$TMPDIR"' EXIT
for p in "${INCLUDE[@]}"; do
if [[ -e "$WORKSPACE/$p" ]]; then
cp -a "$WORKSPACE/$p" "$TMPDIR/"
fi
done
MC_BIN="${MC_BIN:-$WORKSPACE/bin/mc}"
if [[ ! -x "$MC_BIN" ]]; then
MC_BIN="$(command -v mc || true)"
fi
if [[ -z "$MC_BIN" || ! -x "$MC_BIN" ]]; then
echo "MinIO client not found. Set MC_BIN or install mc." >&2
exit 1
fi
"$MC_BIN" alias set minio "$MINIO_ENDPOINT" "$MINIO_ACCESS_KEY" "$MINIO_SECRET_KEY" >/dev/null
"$MC_BIN" mb --ignore-existing "minio/$MINIO_BUCKET" >/dev/null
"$MC_BIN" mirror --overwrite "$TMPDIR" "minio/$MINIO_BUCKET/$PREFIX" >/dev/null
"$MC_BIN" ls --recursive "minio/$MINIO_BUCKET/$PREFIX"
echo "Backup complete: s3://$MINIO_BUCKET/$PREFIX"