Sauvegarde & restauration
Exportez vos mémoires pour sauvegarde, migrez entre minds, restaurez après une perte de données.
Sauvegarde & restauration
Synapse fournit un export/import complet pour la sauvegarde de mémoire, la migration et la reprise après sinistre. Ce guide couvre les opérations essentielles.
Export
Export complet du mind
Exportez toutes les mémoires d'un mind en JSON :
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
https://synapse.schaefer.zone/memory/mind-export > backup.jsonFormat de réponse :
{
"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..."
}
]
}Export incrémental (diff)
Exportez uniquement les mémoires modifiées depuis un horodatage :
SINCE=$(date -d "2026-06-01" +%s)
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
"https://synapse.schaefer.zone/memory/diff?since=$SINCE" > incremental.jsonRéponse :
{
"added": [...],
"updated": [...],
"deleted": [...]
}Sauvegardes automatisées
Planifiez des sauvegardes quotidiennes via 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"}
}'L'endpoint cron reçoit la réponse mais ne la stocke pas. Pour de vraies sauvegardes,
pointez le cron vers votre propre serveur de sauvegarde qui enregistre la réponse.
Mieux : script de sauvegarde externe
#!/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"
# Conserver les 30 derniers jours
find "$BACKUP_DIR" -name "synapse-*.json" -mtime +30 -delete
echo "Backup saved: $BACKUP_DIR/synapse-$DATE.json"Ajoutez à crontab :
0 2 * * * /usr/local/bin/backup-synapse.shRestauration
Restaurer vers le même mind
# Analyser la sauvegarde et re-POSTer chaque mémoire
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}')"
doneRestaurer vers un nouveau mind
# 1. Créer un nouveau 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. Importer les mémoires vers le nouveau 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}')"
doneScript de restauration 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")Migration entre minds
def migrate_memories(source_key, target_key):
"""Migrate all memories from source mind to target mind."""
# Export depuis la source
r = requests.get(
f"{URL}/memory/mind-export",
headers={"Authorization": f"Bearer {source_key}"}
)
data = r.json()
# Import vers la cible
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")Sauvegarder d'autres données
N'oubliez pas de sauvegarder :
| Type de données | Endpoint |
|---|---|
| Mémoires | GET /memory/mind-export |
| Tâches | GET /mind/tasks |
| Scripts | GET /scripts |
| Webhooks | GET /webhooks |
| Tâches cron | GET /cron |
| Variables | GET /var |
| Historique chat | GET /chat/history?limit=10000 |
Vérification
Après restauration, vérifiez :
# Compter les mémoires
curl -s -H "Authorization: Bearer $KEY" \
https://synapse.schaefer.zone/memory/stats | jq .total
# Comparer avec la sauvegarde
jq .memory_count backup.jsonBonnes pratiques
Prochaines étapes
- API Memory
- Cron & Scheduler — pour les sauvegardes automatisées