#!/bin/bash

# 宝塔面板计划任务添加指令
# /bin/bash /root/pk.sh

# 配置需要清理的目录数组（可添加多个路径）
TARGET_DIRS=(
    "/www/wwwroot/DPB/storage/1/apk" #清理APK打包目录
    "/www/wwwroot/DPB/storage/1/ios" #清理ios封装目录
    "/www/wwwroot/DPB/storage/1/mixed" #清理网站封装目录
    "/www/wwwroot/DPB/storage/1/certificate" #清理签名文件目录
)

# 保留天数配置（修改此值调整新旧文件阈值）
KEEP_DAYS=3 #当前是保留最近3天内的文件，超过的则全部清理

# 安全防护：防止误删根目录
for dir in "${TARGET_DIRS[@]}"; do
    # 检查空目录和根目录保护
    if [[ -z "$dir" || "$dir" == "/" ]]; then
        echo "危险操作：禁止清理空目录或根目录！"
        exit 1
    fi
done

# 执行清理操作
echo "======================================"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 开始清理任务"

for target_dir in "${TARGET_DIRS[@]}"; do
    echo "--------------------------------------"
    echo "处理目录: $target_dir"
    
    # 检查目录是否存在
    if [ ! -d "$target_dir" ]; then
        echo "警告：目录不存在，跳过处理"
        continue
    fi
    
    # 获取清理前目录大小
    pre_clean_size=$(du -sh "$target_dir" 2>/dev/null | awk '{print $1}')
    
    # 执行按日期清理（删除超过设定天数的文件/目录）
    find "$target_dir" -mindepth 1 -mtime +$KEEP_DAYS -delete 2>/dev/null
    
    # 获取清理后目录大小
    post_clean_size=$(du -sh "$target_dir" 2>/dev/null | awk '{print $1}')
    
    # 计算释放空间（简化显示）
    echo "清理完成！"
    echo "释放空间: $pre_clean_size → $post_clean_size"
    echo "保留策略: $KEEP_DAYS 天内生成的文件"
    
    # 显示剩余文件数量
    remaining_count=$(find "$target_dir" -mindepth 1 2>/dev/null | wc -l)
    echo "剩余项目: $remaining_count 个"
done

echo "======================================"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 所有目录清理完成"