Files
whatsapp/docker/maintenance/scripts/clean-logs.sh
T
2026-02-03 21:30:55 -05:00

45 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
# Script de limpieza de logs
# Ejecuta a las 3:00 AM
set -e
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Iniciando limpieza de logs..."
# Directorio de logs
LOGS_DIR="/var/www/html/logs"
if [ ! -d "$LOGS_DIR" ]; then
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ⚠️ Directorio de logs no encontrado: $LOGS_DIR"
exit 0
fi
# Contar archivos antes de limpiar
BEFORE_COUNT=$(find "$LOGS_DIR" -name "*.log" -type f | wc -l)
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Archivos de log encontrados: $BEFORE_COUNT"
# Eliminar logs más antiguos de 30 días
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Eliminando logs antiguos (>30 días)..."
find "$LOGS_DIR" -name "*.log" -type f -mtime +30 -delete
# Comprimir logs entre 7-30 días
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Comprimiendo logs antiguos (7-30 días)..."
find "$LOGS_DIR" -name "*.log" -type f -mtime +7 -mtime -30 -exec gzip {} \; 2>/dev/null || true
# Limpiar logs .gz más antiguos de 30 días
find "$LOGS_DIR" -name "*.log.gz" -type f -mtime +30 -delete
# Contar archivos después de limpiar
AFTER_COUNT=$(find "$LOGS_DIR" -name "*.log" -o -name "*.log.gz" -type f | wc -l)
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Archivos de log restantes: $AFTER_COUNT"
# Calcular espacio liberado
SPACE_USED=$(du -sh "$LOGS_DIR" | cut -f1)
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Espacio usado por logs: $SPACE_USED"
# Truncar logs muy grandes (>100MB)
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Truncando logs muy grandes..."
find "$LOGS_DIR" -name "*.log" -type f -size +100M -exec sh -c 'echo "Log truncado el $(date)" > "$1"' _ {} \;
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ✅ Limpieza de logs completada"