Files
wxauto_api/scripts/database/clean_logs.sh
T
2026-04-07 14:11:45 +08:00

45 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
# ///
# clean_logs.sh
# 描述:清理旧日志
# 作者:AI Generated
# 创建日期:2026-04-06
#
# 使用方式:
# ./clean_logs.sh # 清理 30 天前的日志
# ./clean_logs.sh 7 # 清理 7 天前的日志
# ./clean_logs.sh --dry-run # 预览要清理的日志数量
# ///
DB_HOST=${DB_HOST:-localhost}
DB_PORT=${DB_PORT:-5432}
DB_NAME=${DB_NAME:-wxauto}
DB_USER=${DB_USER:-wxauto}
DB_PASS=${DB_PASS:-wxauto_password}
export PGPASSWORD="$DB_PASS"
DAYS=${1:-30}
DRY_RUN=false
if [ "$1" == "--dry-run" ]; then
DRY_RUN=true
DAYS=${2:-30}
fi
if [ "$DRY_RUN" == true ]; then
echo "=== 预览将清理的日志 (${DAYS} 天前) ==="
psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -c \
"SELECT COUNT(*) as logs_to_delete FROM logs WHERE timestamp < NOW() - INTERVAL '$DAYS days';"
else
echo "=== 清理 ${DAYS} 天前的日志 ==="
read -p "确认删除? (y/n) " confirm
if [ "$confirm" == "y" ]; then
psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -c \
"DELETE FROM logs WHERE timestamp < NOW() - INTERVAL '$DAYS days';"
echo "清理完成"
else
echo "已取消"
fi
fi