整理备份:删除workspace冗余镜像、更新备份脚本 2026-03-28
This commit is contained in:
Executable
+55
@@ -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)"
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user