bytelyst-devops-tools/scripts/open-notebook-pilot/backup.sh
2026-06-28 18:56:00 +00:00

33 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
COMPOSE_FILE=${COMPOSE_FILE:-/opt/bytelyst/learning_ai_devops_tools/deployments/open-notebook-pilot/docker-compose.yml}
ENV_FILE=${ENV_FILE:-/etc/bytelyst/open-notebook-pilot.env}
DATA_DIR=${DATA_DIR:-/opt/bytelyst/open-notebook-pilot}
BACKUP_DIR=${BACKUP_DIR:-$DATA_DIR/backups}
STAMP=${STAMP:-$(date -u +%Y%m%dT%H%M%SZ)}
OUT="$BACKUP_DIR/open-notebook-pilot-$STAMP.tar.gz"
META="$BACKUP_DIR/open-notebook-pilot-$STAMP.manifest.txt"
mkdir -p "$BACKUP_DIR"
chmod 700 "$BACKUP_DIR"
# Stop only the Open Notebook pilot to get a consistent RocksDB snapshot.
docker compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" stop open_notebook surrealdb >/dev/null
# Restart even if tar fails.
cleanup() {
docker compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" up -d surrealdb open_notebook >/dev/null || true
}
trap cleanup EXIT
tar --warning=no-file-changed -C / -czf "$OUT" \
opt/bytelyst/open-notebook-pilot/surreal_data \
opt/bytelyst/open-notebook-pilot/notebook_data \
etc/bytelyst/open-notebook-pilot.env
chmod 600 "$OUT"
sha256sum "$OUT" > "$META"
chmod 600 "$META"
printf 'backup=%s\nmanifest=%s\n' "$OUT" "$META"