#!/bin/bash

# 配置项
TARGET_DIR="/data/dj_multictrl_data/live_record"
MAX_SIZE_GB=5
LOG_FILE="/root/dj_multictrl_data/script/logs/cleanup.log"

# 转换为 KB (1GB = 1048576KB)
MAX_SIZE_KB=$((MAX_SIZE_GB * 1048576))

# 获取当前目录总大小（KB）
CURRENT_SIZE_KB=$(du -sk "$TARGET_DIR" | cut -f1)

# 如果超过最大大小，开始清理
if [ "$CURRENT_SIZE_KB" -gt "$MAX_SIZE_KB" ]; then
    echo "$(date): 当前大小 ${CURRENT_SIZE_KB}KB 超过限制 ${MAX_SIZE_KB}KB，开始清理..." >> "$LOG_FILE"

    # 循环删除最旧的文件，直到空间达标
    while [ "$(du -sk "$TARGET_DIR" | cut -f1)" -gt "$MAX_SIZE_KB" ]; do
        # 查找整个目录（包括子目录）中最旧的文件
        OLDEST_FILE=$(find "$TARGET_DIR" -type f -printf '%T+ %p\n' | sort | head -n 1 | cut -d' ' -f2-)

        if [ -n "$OLDEST_FILE" ]; then
            echo "正在删除最旧的文件: $OLDEST_FILE" >> "$LOG_FILE"
            rm -f "$OLDEST_FILE"

            # 检查是否删除成功
            if [ ! -f "$OLDEST_FILE" ]; then
                echo "删除成功" >> "$LOG_FILE"
            else
                echo "删除失败，可能权限不足" >> "$LOG_FILE"
                break  # 避免无限循环
            fi
        else
            echo "没有可删除的文件（可能只剩下空目录）" >> "$LOG_FILE"
            break
        fi
    done
else
    echo "$(date): 当前大小 ${CURRENT_SIZE_KB}KB，未超过限制 ${MAX_SIZE_KB}KB" >> "$LOG_FILE"
fi