netgescon-day0/scripts/ops/netgescon-storage-report.sh

73 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# Show disk usage by administrator and by stable folder.
# Usage:
# scripts/ops/netgescon-storage-report.sh
# scripts/ops/netgescon-storage-report.sh --root storage/app/amministratori
# scripts/ops/netgescon-storage-report.sh --admin KPL9F3XP
ROOT_DIR="storage/app/amministratori"
FILTER_ADMIN=""
while [[ $# -gt 0 ]]; do
case "$1" in
--root)
ROOT_DIR="$2"
shift 2
;;
--admin)
FILTER_ADMIN="$2"
shift 2
;;
*)
echo "Unknown option: $1"
echo "Usage: $0 [--root <dir>] [--admin <code>]"
exit 1
;;
esac
done
if [[ ! -d "$ROOT_DIR" ]]; then
echo "Error: root dir not found: $ROOT_DIR"
exit 1
fi
echo "== ROOT =="
echo "$ROOT_DIR"
echo
echo "== SPACE BY ADMINISTRATOR =="
if [[ -n "$FILTER_ADMIN" ]]; then
if [[ ! -d "$ROOT_DIR/$FILTER_ADMIN" ]]; then
echo "Error: administrator not found: $FILTER_ADMIN"
exit 1
fi
du -sh "$ROOT_DIR/$FILTER_ADMIN"
else
du -sh "$ROOT_DIR"/* 2>/dev/null | sort -h || true
fi
echo
echo "== SPACE BY STABILE =="
if [[ -n "$FILTER_ADMIN" ]]; then
STABILI_DIR="$ROOT_DIR/$FILTER_ADMIN/stabili"
if [[ -d "$STABILI_DIR" ]]; then
du -sh "$STABILI_DIR"/* 2>/dev/null | sort -h || echo "No stabili folders in $STABILI_DIR"
else
echo "No stabili dir for administrator: $FILTER_ADMIN"
fi
else
for admin_dir in "$ROOT_DIR"/*; do
[[ -d "$admin_dir" ]] || continue
admin_code="$(basename "$admin_dir")"
stabili_dir="$admin_dir/stabili"
if [[ -d "$stabili_dir" ]]; then
echo "-- $admin_code --"
du -sh "$stabili_dir"/* 2>/dev/null | sort -h || echo "No stabili folders"
echo
fi
done
fi