Sao lưu & Khôi phục
Xuất bộ nhớ để sao lưu, di chuyển giữa các mind, khôi phục sau mất dữ liệu.
Sao lưu & Khôi phục
Synapse cung cấp xuất/nhập đầy đủ cho sao lưu bộ nhớ, di chuyển và khôi phục thảm họa. Hướng dẫn này bao phủ các thao tác thiết yếu.
Xuất
Xuất Mind đầy đủ
Xuất tất cả bộ nhớ trong một mind dưới dạng JSON:
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
https://synapse.schaefer.zone/memory/mind-export > backup.jsonĐịnh dạng phản hồi:
{
"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..."
}
]
}Xuất gia tăng (Diff)
Xuất chỉ bộ nhớ đã thay đổi kể từ một timestamp:
SINCE=$(date -d "2026-06-01" +%s)
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
"https://synapse.schaefer.zone/memory/diff?since=$SINCE" > incremental.jsonPhản hồi:
{
"added": [...],
"updated": [...],
"deleted": [...]
}Sao lưu tự động
Lên lịch sao lưu hàng ngày qua 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"}
}'Endpoint cron nhận phản hồi nhưng không lưu nó. Cho sao lưu thực sự, trỏ cron
đến server sao lưu riêng của bạn lưu phản hồi.
Tốt hơn: Script sao lưu bên ngoài
#!/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"Thêm vào crontab:
0 2 * * * /usr/local/bin/backup-synapse.shKhôi phục
Khôi phục về cùng 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}')"
doneKhôi phục về Mind mới
# 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}')"
doneScript khôi phục 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")Di chuyển giữa các Mind
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")Sao lưu dữ liệu khác
Đừng quên sao lưu:
| Loại dữ liệu | Endpoint |
|---|---|
| Bộ nhớ | GET /memory/mind-export |
| Tác vụ | GET /mind/tasks |
| Script | GET /scripts |
| Webhook | GET /webhooks |
| Cron job | GET /cron |
| Biến | GET /var |
| Lịch sử chat | GET /chat/history?limit=10000 |
Xác minh
Sau khi khôi phục, xác minh:
# Count memories
curl -s -H "Authorization: Bearer $KEY" \
https://synapse.schaefer.zone/memory/stats | jq .total
# Compare with backup
jq .memory_count backup.jsonThực hành tốt nhất
Bước tiếp theo
- Memory API
- Cron & Scheduler — cho sao lưu tự động