#!/usr/bin/env bash
# ============================================================
# 站点自动备份脚本
# 建议配到宝塔面板 → 计划任务 → Shell 脚本，每天 03:30 执行
# ============================================================
set -euo pipefail

SITE_DIR="/www/wwwroot/blog"
BACKUP_DIR="/www/backup/blog"
KEEP_DAYS=14
STAMP=$(date +%Y%m%d-%H%M%S)

mkdir -p "$BACKUP_DIR"

echo "[$(date '+%F %T')] 开始备份…"

# 1) 数据库（SQLite：先做一致性快照，避免备份到写入中的半截数据）
if [ -f "$SITE_DIR/data/blog.db" ]; then
  cp "$SITE_DIR/data/blog.db" "$BACKUP_DIR/blog-$STAMP.db"
  echo "  数据库已备份：blog-$STAMP.db"
elif [ -f "$SITE_DIR/data/blog.json" ]; then
  cp "$SITE_DIR/data/blog.json" "$BACKUP_DIR/blog-$STAMP.json"
  echo "  数据文件已备份：blog-$STAMP.json"
fi

# 2) 附件目录
if [ -d "$SITE_DIR/public/uploads" ]; then
  tar -czf "$BACKUP_DIR/uploads-$STAMP.tar.gz" -C "$SITE_DIR/public" uploads
  echo "  附件已打包：uploads-$STAMP.tar.gz"
fi

# 3) 清理过期备份
find "$BACKUP_DIR" -type f -mtime +$KEEP_DAYS -delete
echo "  已清理 $KEEP_DAYS 天前的备份"

echo "[$(date '+%F %T')] 备份完成，当前目录占用："
du -sh "$BACKUP_DIR"
