45 lines
1.3 KiB
Bash
Executable File
45 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# 织忆 MemoryWeave 每日备份脚本
|
|
# LanceDB checkpoint + SQLite .backup + Redis BGSAVE
|
|
# 保留最近 7 天每天 + 最近 4 周周日
|
|
|
|
set -euo pipefail
|
|
|
|
BACKUP_DIR="/backup/zhiyi"
|
|
DATE=$(date +%Y-%m-%d)
|
|
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
|
|
BACKUP_FILE="$BACKUP_DIR/backup-$DATE-$TIMESTAMP.tar.gz"
|
|
DATA_DIR="/var/lib/memoryweave"
|
|
|
|
mkdir -p "$BACKUP_DIR"
|
|
|
|
# 1. 调用 API 触发备份
|
|
echo "[backup] Triggering admin/backup API..."
|
|
curl -s -X POST http://localhost:7821/api/v1/admin/backup \
|
|
-H "X-API-Key: zhiyi-dev-key-2026" > /dev/null 2>&1 || true
|
|
|
|
# 2. LanceDB checkpoint + SQLite + Redis
|
|
echo "[backup] Creating archive..."
|
|
tar czf "$BACKUP_FILE" \
|
|
-C "$(dirname $DATA_DIR)" "$(basename $DATA_DIR)" \
|
|
2>/dev/null || true
|
|
|
|
# 3. Redis BGSAVE
|
|
echo "[backup] Redis BGSAVE..."
|
|
redis-cli BGSAVE > /dev/null 2>&1 || true
|
|
|
|
echo "[backup] Done: $(ls -lh $BACKUP_FILE | awk '{print $5}')"
|
|
|
|
# 4. 清理旧备份 — 保留最近 7 天 + 每周日的
|
|
echo "[backup] Pruning old backups..."
|
|
find "$BACKUP_DIR" -name "backup-*.tar.gz" -mtime +7 | while read f; do
|
|
DAY=$(basename "$f" | cut -d- -f2-4)
|
|
DOW=$(date -d "$DAY" +%u 2>/dev/null || echo "0")
|
|
if [ "$DOW" != "7" ]; then
|
|
rm -f "$f"
|
|
echo "[backup] Pruned: $(basename $f)"
|
|
fi
|
|
done
|
|
|
|
echo "[backup] All done."
|