整理备份:删除workspace冗余镜像、更新备份脚本 2026-03-28

This commit is contained in:
OpenClaw Backup
2026-03-28 20:05:29 +08:00
parent d09281e48c
commit 10622af38d
11 changed files with 59 additions and 19 deletions
+55
View File
@@ -0,0 +1,55 @@
#!/bin/bash
# ============================================================================
# 向量记忆增量备份脚本
# 策略:每日一个快照,通过 rsync --link-dest 指向前一天快照
# 文件内容未变时使用硬链接(不占额外空间)
# 保留最近 14 个每日快照
# ============================================================================
set -e
SOURCE="$HOME/.openclaw/memory/main.sqlite"
BACKUP_DIR="$HOME/openclaw-backup/vector_memory/snapshots"
TODAY=$(date +%Y%m%d)
YESTERDAY=$(date -d "yesterday" +%Y%m%d)
SNAPSHOT_TODAY="$BACKUP_DIR/$TODAY"
SNAPSHOT_YESTERDAY="$BACKUP_DIR/$YESTERDAY"
mkdir -p "$BACKUP_DIR"
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [vector_backup] $1"
}
# ---- 检查源文件 ----
if [ ! -f "$SOURCE" ]; then
log "ERROR: 源文件不存在 $SOURCE"
exit 1
fi
# ---- 执行增量/全量备份 ----
if [ -n "$SNAPSHOT_YESTERDAY" ] && [ -d "$SNAPSHOT_YESTERDAY" ]; then
# 有昨天快照:增量硬链接
mkdir -p "$SNAPSHOT_TODAY"
rsync -a --link-dest="$SNAPSHOT_YESTERDAY" "$SOURCE" "$SNAPSHOT_TODAY/main.sqlite"
log "增量备份完成 → $SNAPSHOT_TODAY/main.sqlite ($(du -h "$SNAPSHOT_TODAY/main.sqlite" | cut -f1))"
else
# 无昨天快照(首次或跨天后首次):全量
mkdir -p "$SNAPSHOT_TODAY"
cp "$SOURCE" "$SNAPSHOT_TODAY/main.sqlite"
log "全量备份完成 → $SNAPSHOT_TODAY/main.sqlite ($(du -h "$SNAPSHOT_TODAY/main.sqlite" | cut -f1))"
fi
# ---- 清理 14 天前的快照 ----
SNAP_COUNT=$(ls -d "$BACKUP_DIR"/20* 2>/dev/null | wc -l)
if [ "$SNAP_COUNT" -gt 14 ]; then
ls -dt "$BACKUP_DIR"/20* | tail -n +15 | xargs -r rm -rf
log "已清理 14 天前的旧快照"
fi
# ---- 打印当前快照列表 ----
log "当前每日快照(共 $SNAP_COUNT 个):"
for d in $(ls -dt "$BACKUP_DIR"/20* 2>/dev/null); do
log " $(basename $d) ($(du -sh "$d" | cut -f1))"
done
log "总磁盘占用: $(du -sh "$BACKUP_DIR" | cut -f1)"