feat(ops): add backup and LiteLLM sync maintenance scripts
This commit is contained in:
54
scripts/backup-to-minio.sh
Executable file
54
scripts/backup-to-minio.sh
Executable file
@@ -0,0 +1,54 @@
|
||||
#!/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"
|
||||
Reference in New Issue
Block a user