#!/bin/bash

DIR="/var/log/VeeamBackup"
THRESHOLD=90
AGE_DAYS=30
SAFE_MINUTES=120
get_usage() {
    df -P "$DIR" | awk 'NR==2 { sub(/%/, "", $5); print $5 }'
}

USAGE=$(get_usage)
if (( USAGE < THRESHOLD )); then
    exit 0
fi

echo "[$(date)] Disk usage ${USAGE}% — starting cleanup"

USAGE=$(get_usage)
mapfile -t FILES < <(
    find "$DIR" -type f \( -name '*.log.gz' -o -name '*.zip' \) -print0 |
    while IFS= read -r -d '' file; do
        btime=$(stat -c '%W' "$file" 2>/dev/null || echo -1)
        if (( btime > 0 )); then
            echo "$btime|$file"
        fi
    done |
    sort -n |
    cut -d'|' -f2-
)

for file in "${FILES[@]}"; do
    USAGE=$(get_usage)
    if (( USAGE < THRESHOLD )); then
        echo "[$(date)] Usage below threshold, stopping rule 2"
        break
    fi
    echo "[$(date)] Deleting $file"
    rm -f "$file"
done

find "$DIR" -type f \
    -mtime +"$AGE_DAYS" \
    -mmin +"$SAFE_MINUTES" \
    \( -iname '*.Storage*' -o -iname '*.Gate*' -o -iname '*.Source*' -o -iname '*.Target*' \) \
    -print0 |
while IFS= read -r -d '' file; do
    USAGE=$(get_usage)
    if (( USAGE < THRESHOLD )); then
        echo "[$(date)] Usage below threshold, stopping rule 1"
        break
    fi
    echo "[$(date)] Deleting $file"
    rm -f "$file"
done

echo "[$(date)] Cleanup finished — usage $(get_usage)%"