#!/bin/bash
# ==============================================
# 🔄 每日备份脚本（凌晨4点）
# 所有文件打包成一个压缩包 → Nginx 目录
# ==============================================

NGINX_DIR="/home/www/html/backup"
DATE_TAG=$(date +%Y-%m-%d)
TEMP_DIR="/tmp/daily-backup"
ARCHIVE="$NGINX_DIR/$DATE_TAG/backup-$DATE_TAG.tar.gz"
LOG_FILE="/var/log/daily-backup.log"
LOCK_FILE="/tmp/daily-backup.lock"

SESSIONS_DIR="/root/.openclaw/agents/main/sessions"
WORKSPACE_DIR="/root/.openclaw/workspace"

exec 200>"$LOCK_FILE"
flock -n 200 || { echo "[$(date '+%Y-%m-%d %H:%M:%S')] ⚠️ 已在运行，跳过" | tee -a "$LOG_FILE"; exit 0; }

log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"; }

log "========================"
log "备份开始 ($DATE_TAG)"

mkdir -p "$TEMP_DIR" "$NGINX_DIR/$DATE_TAG"
rm -f "$TEMP_DIR"/*

# 收集所有要备份的文件到临时目录
log "收集聊天记录..."
if [ -d "$SESSIONS_DIR" ] && [ "$(ls -A "$SESSIONS_DIR" 2>/dev/null)" ]; then
    cp -r "$SESSIONS_DIR" "$TEMP_DIR/sessions" 2>> "$LOG_FILE"
    log "✅ 聊天记录 ($(du -sh "$TEMP_DIR/sessions" | cut -f1))"
fi

log "收集记忆文件..."
if [ -d "$WORKSPACE_DIR" ]; then
    cp "$WORKSPACE_DIR/MEMORY.md" "$TEMP_DIR/" 2>/dev/null
    cp -r "$WORKSPACE_DIR/memory" "$TEMP_DIR/" 2>/dev/null
    log "✅ 记忆文件 ($(du -sh "$TEMP_DIR/MEMORY.md" "$TEMP_DIR/memory" 2>/dev/null | tail -1 | awk '{print $1}'))"
fi

log "收集系统配置..."
if [ -d /home/liangzi/工作 ]; then
    cp -r /home/liangzi/工作 "$TEMP_DIR/" 2>> "$LOG_FILE"
fi
if [ -d /home/liangzi/document ]; then
    cp -r /home/liangzi/document "$TEMP_DIR/" 2>> "$LOG_FILE"
fi
log "✅ 系统配置 ($(du -sh "$TEMP_DIR/工作" "$TEMP_DIR/document" 2>/dev/null | tail -1 | awk '{print $1}'))"

log "收集 openclaw.json..."
if [ -f /root/.openclaw/openclaw.json ]; then
    cp /root/.openclaw/openclaw.json "$TEMP_DIR/" 2>> "$LOG_FILE"
    log "✅ openclaw.json ($(du -h "$TEMP_DIR/openclaw.json" | cut -f1))"
fi

# 打包成一个文件
log "打包中..."
tar czf "$ARCHIVE" -C "$TEMP_DIR" . 2>> "$LOG_FILE"
ARCHIVE_SIZE=$(du -h "$ARCHIVE" | cut -f1)
log "✅ 打包完成: $ARCHIVE ($ARCHIVE_SIZE)"

# 清理临时文件
rm -rf "$TEMP_DIR"/*
log "ℹ️ 临时文件已清理"

log ""
log "========================"
log "✅ 备份完成"
log "📂 $ARCHIVE"
log "========================"

flock -u 200
