Agnes 2.0-flash是推理模型,推理token占大量预算。 800仍不够→JSON截断(parse error: unexpected end of JSON input)。 1200确保推理+正文都够用。
70 lines
2.2 KiB
Bash
Executable File
70 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# 织忆每日备份脚本(由 cronjob 每天 04:00 调用)
|
|
# 直接执行备份,不走 Go HTTP API
|
|
|
|
set -e
|
|
|
|
API_KEY="zhiyi-dev-key-2026"
|
|
BACKUP_ROOT="/home/muc/backups/memoryweave"
|
|
DATA_DIR="/var/lib/memoryweave"
|
|
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
|
|
BACKUP_DIR="$BACKUP_ROOT/$TIMESTAMP"
|
|
|
|
echo "[$TIMESTAMP] 织忆备份开始..."
|
|
|
|
# 1. 创建备份目录
|
|
mkdir -p "$BACKUP_DIR"
|
|
|
|
# 2. SQLite graph.db 备份
|
|
echo "[$TIMESTAMP] 备份 graph.db..."
|
|
if ! sqlite3 "$DATA_DIR/graph.db" ".backup $BACKUP_DIR/graph.db"; then
|
|
echo "[$TIMESTAMP] ERROR: graph.db 备份失败"
|
|
exit 1
|
|
fi
|
|
|
|
# 3. SQLite memoryweave.db 备份
|
|
echo "[$TIMESTAMP] 备份 memoryweave.db..."
|
|
if ! sqlite3 "$DATA_DIR/memoryweave.db" ".backup $BACKUP_DIR/memoryweave.db"; then
|
|
echo "[$TIMESTAMP] ERROR: memoryweave.db 备份失败"
|
|
exit 1
|
|
fi
|
|
|
|
# 4. Redis 异步保存
|
|
echo "[$TIMESTAMP] 触发 Redis BGSAVE..."
|
|
redis-cli BGSAVE 2>/dev/null || true
|
|
|
|
# 5. LanceDB 目录 tar 打包(最多等 300s)
|
|
echo "[$TIMESTAMP] 打包 LanceDB 数据(可能需要 1-2 分钟)..."
|
|
if ! timeout 300 tar czf "$BACKUP_DIR/lance-data.tar.gz" \
|
|
-C "$DATA_DIR" episodes.lance memories.lance tombstones.lance; then
|
|
echo "[$TIMESTAMP] ERROR: LanceDB 打包超时或失败"
|
|
exit 1
|
|
fi
|
|
|
|
# 7. 清理旧备份(保留最近7天)
|
|
echo "[$TIMESTAMP] 清理过期备份..."
|
|
DELETED=0
|
|
for d in "$BACKUP_ROOT"/*/; do
|
|
[ -d "$d" ] || continue
|
|
age_days=$(($(date +%s) - $(stat -c %Y "$d") + 86399) / 86400)
|
|
if [ "$age_days" -gt 7 ]; then
|
|
rm -rf "$d"
|
|
echo "[$TIMESTAMP] 已删除过期备份: $d"
|
|
DELETED=$((DELETED + 1))
|
|
fi
|
|
done
|
|
echo "[$TIMESTAMP] 清理完成,删除了 $DELETED 个过期备份"
|
|
|
|
# 8. 验证
|
|
echo "[$TIMESTAMP] 验证备份..."
|
|
for f in graph.db memoryweave.db lance-data.tar.gz; do
|
|
if [ ! -s "$BACKUP_DIR/$f" ]; then
|
|
echo "[$TIMESTAMP] ERROR: $f 为空或不存在"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
# 9. 打印结果
|
|
SIZE=$(du -sh "$BACKUP_DIR" | cut -f1)
|
|
echo "[$TIMESTAMP] 备份成功 | 路径: $BACKUP_DIR | 大小: $SIZE"
|
|
echo "[$TIMESTAMP] 织忆备份结果: OK | 路径: $BACKUP_DIR | 时间戳: $TIMESTAMP" > "$HOME/projects/memoryweave/backups/backup-$TIMESTAMP.log" |