#!/usr/bin/env bash # Backup Lakehouse git state + critical Docker volumes to ObjectScale/local path. set -euo pipefail REPO="${REPO:-/root/lakehouse}" BACKUP_ROOT="${BACKUP_ROOT:-/var/backups/atc-lakehouse}" DATE=$(date +%Y%m%d-%H%M%S) DEST="$BACKUP_ROOT/$DATE" S3_ENDPOINT="${S3_ENDPOINT:-http://10.0.20.111:9020}" S3_BUCKET="${S3_BUCKET:-backups}" mkdir -p "$DEST" echo "==> Git archive" tar czf "$DEST/lakehouse-git.tgz" -C "$(dirname "$REPO")" "$(basename "$REPO")" \ --exclude=".git/objects/pack/*.tmp" echo "==> Docker volumes (docker01)" for vol in forgejo_forgejo superset_superset_home lam_lam; do if docker volume inspect "$vol" &>/dev/null; then docker run --rm -v "${vol}:/data:ro" -v "$DEST:/backup" alpine \ tar czf "/backup/${vol}.tgz" -C /data . echo " backed up $vol" fi done echo "==> Config snapshot via collect" "$REPO/scripts/collect/collect-fleet-config.sh" || true if command -v aws &>/dev/null && [[ -n "${AWS_ACCESS_KEY_ID:-}" ]]; then echo "==> Upload to ObjectScale" aws --endpoint-url "$S3_ENDPOINT" s3 cp "$DEST" "s3://${S3_BUCKET}/lakehouse/${DATE}/" --recursive fi echo "Backup complete: $DEST" ls -la "$DEST"