- POST /admin/backup/cleanup — retention cleanup via API (dry-run by default) - record_interaction() accepts extract=True to auto-extract candidate memories from response text using the Phase 9C rule-based extractor - POST /interactions accepts extract field to enable extraction on capture - deploy/dalidou/cron-backup.sh — daily backup + cleanup for cron Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
57 lines
1.8 KiB
Bash
57 lines
1.8 KiB
Bash
#!/usr/bin/env bash
|
|
#
|
|
# deploy/dalidou/cron-backup.sh
|
|
# ------------------------------
|
|
# Daily backup + retention cleanup via the AtoCore API.
|
|
#
|
|
# Intended to run from cron on Dalidou:
|
|
#
|
|
# # Daily at 03:00 UTC
|
|
# 0 3 * * * /srv/storage/atocore/app/deploy/dalidou/cron-backup.sh >> /var/log/atocore-backup.log 2>&1
|
|
#
|
|
# What it does:
|
|
# 1. Creates a runtime backup (db + registry, no chroma by default)
|
|
# 2. Runs retention cleanup with --confirm to delete old snapshots
|
|
# 3. Logs results to stdout (captured by cron into the log file)
|
|
#
|
|
# Fail-open: exits 0 even on API errors so cron doesn't send noise
|
|
# emails. Check /var/log/atocore-backup.log for diagnostics.
|
|
#
|
|
# Environment variables:
|
|
# ATOCORE_URL default http://127.0.0.1:8100
|
|
# ATOCORE_BACKUP_CHROMA default false (set to "true" for cold chroma copy)
|
|
|
|
set -euo pipefail
|
|
|
|
ATOCORE_URL="${ATOCORE_URL:-http://127.0.0.1:8100}"
|
|
INCLUDE_CHROMA="${ATOCORE_BACKUP_CHROMA:-false}"
|
|
TIMESTAMP="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
|
|
log() { printf '[%s] %s\n' "$TIMESTAMP" "$*"; }
|
|
|
|
log "=== AtoCore daily backup starting ==="
|
|
|
|
# Step 1: Create backup
|
|
log "Step 1: creating backup (chroma=$INCLUDE_CHROMA)"
|
|
BACKUP_RESULT=$(curl -sf -X POST \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"include_chroma\": $INCLUDE_CHROMA}" \
|
|
"$ATOCORE_URL/admin/backup" 2>&1) || {
|
|
log "ERROR: backup creation failed: $BACKUP_RESULT"
|
|
exit 0
|
|
}
|
|
log "Backup created: $BACKUP_RESULT"
|
|
|
|
# Step 2: Retention cleanup (confirm=true to actually delete)
|
|
log "Step 2: running retention cleanup"
|
|
CLEANUP_RESULT=$(curl -sf -X POST \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"confirm": true}' \
|
|
"$ATOCORE_URL/admin/backup/cleanup" 2>&1) || {
|
|
log "ERROR: cleanup failed: $CLEANUP_RESULT"
|
|
exit 0
|
|
}
|
|
log "Cleanup result: $CLEANUP_RESULT"
|
|
|
|
log "=== AtoCore daily backup complete ==="
|