#!/usr/bin/env bash # Prune old storage growth snapshot files under logs/storage-growth/. # Keeps history.csv and cron.log; deletes snapshot_*.txt older than KEEP_DAYS. # Usage: ./scripts/monitoring/prune-storage-snapshots.sh [--days N] [--dry-run] set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" LOG_DIR="${LOG_DIR:-$PROJECT_ROOT/logs/storage-growth}" KEEP_DAYS="${KEEP_DAYS:-30}" DRY_RUN=0 while [ $# -gt 0 ]; do case "$1" in --days) KEEP_DAYS="${2:-30}" shift 2 ;; --dry-run) DRY_RUN=1 shift ;; *) shift ;; esac done if [ ! -d "$LOG_DIR" ]; then echo "Directory $LOG_DIR does not exist; nothing to prune." exit 0 fi # Delete snapshot_YYYYMMDD_HHMMSS.txt older than KEEP_DAYS (by mtime) count=0 while IFS= read -r -d '' f; do [ -z "$f" ] && continue if [ "$DRY_RUN" -eq 1 ]; then echo "[dry-run] would remove: $f" else rm -f "$f" fi ((count++)) || true done < <(find "$LOG_DIR" -maxdepth 1 -name 'snapshot_*.txt' -mtime "+${KEEP_DAYS}" -print0 2>/dev/null || true) if [ "$DRY_RUN" -eq 1 ]; then echo "Dry run: would remove $count snapshot(s) older than ${KEEP_DAYS} days." else echo "Removed $count snapshot(s) older than ${KEEP_DAYS} days from $LOG_DIR." fi