| set -e | |
| REPO="${HF_DATASET:-jay-hank/Nexova-storage}" | |
| TOKEN="${HF_TOKEN}" | |
| DB="./data/nexova.db" | |
| INTERVAL="${BACKUP_INTERVAL:-1800}" | |
| if [ -z "$TOKEN" ]; then | |
| echo "[backup] HF_TOKEN not set, disabled" | |
| exit 0 | |
| fi | |
| echo "[backup] loop every ${INTERVAL}s -> $REPO" | |
| while true; do | |
| sleep "$INTERVAL" | |
| if [ -f "$DB" ]; then | |
| SIZE=$(wc -c < "$DB") | |
| B64=$(base64 -w0 "$DB") | |
| TS=$(date -u +%FT%TZ) | |
| echo "[backup] uploading ($SIZE bytes)..." | |
| HTTP=$(curl -s -w "%{http_code}" -o /dev/null \ | |
| -X POST "https://huggingface.co/api/datasets/$REPO/commit/main" \ | |
| -H "Authorization: Bearer $TOKEN" \ | |
| -H "Content-Type: application/json" \ | |
| -d "{\"summary\":\"auto-backup $TS\",\"operations\":[{\"op\":\"upload\",\"path\":\"nexova.db\",\"encoding\":\"base64\",\"content\":\"$B64\"}]}") | |
| echo "[backup] HTTP $HTTP at $TS" | |
| fi | |
| done | |