33 lines
1.1 KiB
Bash
Executable File
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"
|