45 lines
1.6 KiB
Bash
Executable File
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"
|