35 lines
1.2 KiB
Bash
35 lines
1.2 KiB
Bash
#!/bin/bash
|
|
# ==============================================================================
|
|
# SIRO Maps — Weekly Maintenance & Log Cleanup Script
|
|
# ==============================================================================
|
|
set -euo pipefail
|
|
|
|
APP_DIR="${APP_DIR:-/home/hamzadoctor/app}"
|
|
LOG_DIR="${APP_DIR}/logs"
|
|
RETENTION_DAYS=14
|
|
|
|
echo "🧹 [$(date '+%Y-%m-%d %H:%M:%S')] Starting weekly log and docker maintenance..."
|
|
|
|
# 1. Clean old log files
|
|
if [ -d "$LOG_DIR" ]; then
|
|
find "$LOG_DIR" -type f -name "*.log" -mtime +"$RETENTION_DAYS" -exec rm -f {} +
|
|
echo "✅ Removed log files older than ${RETENTION_DAYS} days."
|
|
fi
|
|
|
|
# 2. Truncate current active logs if they exceed 50MB
|
|
for log in "$LOG_DIR"/*.log; do
|
|
if [ -f "$log" ]; then
|
|
size=$(stat -c%s "$log" 2>/dev/null || stat -f%z "$log" 2>/dev/null || echo 0)
|
|
if [ "$size" -gt 52428800 ]; then # 50MB
|
|
tail -n 10000 "$log" > "${log}.tmp" && mv "${log}.tmp" "$log"
|
|
echo "✂️ Truncated large log file: $log"
|
|
fi
|
|
fi
|
|
done
|
|
|
|
# 3. Clean dangling docker images and build cache
|
|
docker image prune -f --filter "until=168h" > /dev/null 2>&1 || true
|
|
docker builder prune -f --keep-storage 2GB > /dev/null 2>&1 || true
|
|
|
|
echo "🏁 [$(date '+%Y-%m-%d %H:%M:%S')] Cleanup completed successfully."
|