Skip to main content

बैकअप और रिस्टोर

बैकअप के लिए अपनी मेमोरीज़ निर्यात करें, minds के बीच माइग्रेट करें, डेटा हानि के बाद रिस्टोर करें।


बैकअप और रिस्टोर

Synapse मेमोरी बैकअप, माइग्रेशन, और आपदा पुनर्प्राप्ति के लिए पूर्ण निर्यात/आयात प्रदान करता है। यह गाइड आवश्यक ऑपरेशन्स को कवर करती है।

निर्यात

पूर्ण Mind निर्यात

एक mind में सभी मेमोरीज़ को JSON के रूप में निर्यात करें:

curl -H "Authorization: Bearer YOUR_MIND_KEY" \
     https://synapse.schaefer.zone/memory/mind-export > backup.json

प्रतिक्रिया प्रारूप:

{
  "mind_id": "m_xyz789",
  "mind_name": "Work Mind",
  "exported_at": "2026-06-27T...",
  "memory_count": 142,
  "memories": [
    {
      "id": "mem_001",
      "category": "identity",
      "key": "user_name",
      "content": "Michael Schäfer",
      "tags": ["person", "identity"],
      "priority": "critical",
      "source": "user",
      "verified": true,
      "created_at": "2026-06-15T...",
      "updated_at": "2026-06-27T..."
    }
  ]
}

इंक्रीमेंटल निर्यात (Diff)

केवल किसी टाइमस्टैम्प के बाद से बदली गई मेमोरीज़ निर्यात करें:

SINCE=$(date -d "2026-06-01" +%s)
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
     "https://synapse.schaefer.zone/memory/diff?since=$SINCE" > incremental.json

प्रतिक्रिया:

{
  "added": [...],
  "updated": [...],
  "deleted": [...]
}

स्वचालित बैकअप

cron के माध्यम से दैनिक बैकअप शेड्यूल करें:

curl -X POST https://synapse.schaefer.zone/cron \
  -H "Authorization: Bearer YOUR_MIND_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "schedule": "0 2 * * *",
    "endpoint": "https://synapse.schaefer.zone/memory/mind-export",
    "method": "GET",
    "headers": {"Authorization": "Bearer YOUR_MIND_KEY"}
  }'
cron एंडपॉइंट प्रतिक्रिया प्राप्त करता है लेकिन इसे स्टोर नहीं करता। वास्तविक बैकअप के लिए, cron को अपने स्वयं के बैकअप सर्वर पर निर्देशित करें जो प्रतिक्रिया सहेजता है।

बेहतर: बाहरी बैकअप स्क्रिप्ट

#!/bin/bash
# backup-synapse.sh
MIND_KEY="${SYNAPSE_MIND_KEY}"
DATE=$(date +%Y%m%d)
BACKUP_DIR="/backups/synapse"

mkdir -p "$BACKUP_DIR"

curl -s -H "Authorization: Bearer $MIND_KEY" \
     https://synapse.schaefer.zone/memory/mind-export \
     > "$BACKUP_DIR/synapse-$DATE.json"

# Keep last 30 days
find "$BACKUP_DIR" -name "synapse-*.json" -mtime +30 -delete

echo "Backup saved: $BACKUP_DIR/synapse-$DATE.json"

crontab में जोड़ें:

0 2 * * * /usr/local/bin/backup-synapse.sh

रिस्टोर

उसी Mind में रिस्टोर करें

# Parse backup and re-POST each memory
jq -c '.memories[]' backup.json | while read mem; do
  curl -X POST https://synapse.schaefer.zone/memory \
    -H "Authorization: Bearer YOUR_MIND_KEY" \
    -H "Content-Type: application/json" \
    -d "$(echo "$mem" | jq '{category, key, content, tags, priority}')"
done

नए Mind में रिस्टोर करें

# 1. Create new mind
NEW_KEY=$(curl -s -X POST https://synapse.schaefer.zone/minds \
  -H "Authorization: Bearer YOUR_JWT" \
  -H "Content-Type: application/json" \
  -d '{"name":"Restored Mind","description":"Restore from backup"}' \
  | jq -r .mind_key)

# 2. Import memories to new mind
jq -c '.memories[]' backup.json | while read mem; do
  curl -X POST https://synapse.schaefer.zone/memory \
    -H "Authorization: Bearer $NEW_KEY" \
    -H "Content-Type: application/json" \
    -d "$(echo "$mem" | jq '{category, key, content, tags, priority}')"
done

Python रिस्टोर स्क्रिप्ट

import json
import requests

URL = "https://synapse.schaefer.zone"
MIND_KEY = "mk_..."

def restore(backup_file):
    with open(backup_file) as f:
        data = json.load(f)
    
    for mem in data["memories"]:
        requests.post(
            f"{URL}/memory",
            headers={
                "Authorization": f"Bearer {MIND_KEY}",
                "Content-Type": "application/json"
            },
            json={
                "category": mem["category"],
                "key": mem["key"],
                "content": mem["content"],
                "tags": mem.get("tags", []),
                "priority": mem.get("priority", "normal")
            }
        )
    
    print(f"Restored {len(data['memories'])} memories")

restore("backup.json")

Minds के बीच माइग्रेशन

def migrate_memories(source_key, target_key):
    """Migrate all memories from source mind to target mind."""
    # Export from source
    r = requests.get(
        f"{URL}/memory/mind-export",
        headers={"Authorization": f"Bearer {source_key}"}
    )
    data = r.json()
    
    # Import to target
    for mem in data["memories"]:
        requests.post(
            f"{URL}/memory",
            headers={
                "Authorization": f"Bearer {target_key}",
                "Content-Type": "application/json"
            },
            json={
                "category": mem["category"],
                "key": mem["key"],
                "content": mem["content"],
                "tags": mem.get("tags", []),
                "priority": mem.get("priority", "normal")
            }
        )
    
    print(f"Migrated {len(data['memories'])} memories")

अन्य डेटा बैकअप

बैकअप करना न भूलें:

डेटा प्रकार एंडपॉइंट
Memories GET /memory/mind-export
Tasks GET /mind/tasks
Scripts GET /scripts
Webhooks GET /webhooks
Cron jobs GET /cron
Variables GET /var
Chat history GET /chat/history?limit=10000

सत्यापन

रिस्टोर के बाद, सत्यापित करें:

# Count memories
curl -s -H "Authorization: Bearer $KEY" \
     https://synapse.schaefer.zone/memory/stats | jq .total

# Compare with backup
jq .memory_count backup.json

सर्वोत्तम प्रथाएँ

अगले कदम