#!/bin/bash
# ==============================================
# 聊天记录 + 记忆文件 每日备份脚本
# 每天 3:00 由 crontab 触发
# 永久保留
# ==============================================

set -e

BACKUP_BASE="/home/liangzi/chat-backups"
DATE_TAG=$(date +%Y-%m-%d)
# 永久保留，不清理旧备份

# 源路径
SESSIONS_DIR="/root/.openclaw/agents/main/sessions"
WORKSPACE_DIR="/root/.openclaw/workspace"

# 目标目录
SESSIONS_BACKUP_DIR="$BACKUP_BASE/sessions"
MEMORY_BACKUP_DIR="$BACKUP_BASE/memory"
LOGS_DIR="$BACKUP_BASE/logs"

mkdir -p "$SESSIONS_BACKUP_DIR" "$MEMORY_BACKUP_DIR" "$LOGS_DIR"

LOG_FILE="$LOGS_DIR/backup-$DATE_TAG.log"

echo "[$(date '+%Y-%m-%d %H:%M:%S')] 开始备份..." > "$LOG_FILE"

# 1. 备份聊天记录
SESSIONS_ARCHIVE="$SESSIONS_BACKUP_DIR/sessions-$DATE_TAG.tar.gz"
if [ -d "$SESSIONS_DIR" ] && [ "$(ls -A "$SESSIONS_DIR" 2>/dev/null)" ]; then
    tar -czf "$SESSIONS_ARCHIVE" -C "$SESSIONS_DIR" . 2>> "$LOG_FILE"
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] 聊天记录备份完成: $(du -h "$SESSIONS_ARCHIVE" | cut -f1)" >> "$LOG_FILE"
else
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] 警告: sessions 目录为空或不存在，跳过" >> "$LOG_FILE"
fi

# 2. 备份记忆文件 (MEMORY.md + memory/ 目录)
MEMORY_ARCHIVE="$MEMORY_BACKUP_DIR/memory-$DATE_TAG.tar.gz"
if [ -d "$WORKSPACE_DIR" ]; then
    tar -czf "$MEMORY_ARCHIVE" \
        -C "$WORKSPACE_DIR" \
        MEMORY.md \
        memory/ 2>> "$LOG_FILE" || true
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] 记忆文件备份完成: $(du -h "$MEMORY_ARCHIVE" | cut -f1)" >> "$LOG_FILE"
else
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] 警告: workspace 目录不存在，跳过" >> "$LOG_FILE"
fi

echo "[$(date '+%Y-%m-%d %H:%M:%S')] 备份完成（永久保留）" >> "$LOG_FILE"

# 输出摘要（会出现在日志里）
echo "===== 备份摘要 ====="
echo "聊天记录: $SESSIONS_ARCHIVE"
echo "记忆文件: $MEMORY_ARCHIVE"
echo "日志: $LOG_FILE"
echo "===================="
