-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplex_space_survey.sh
More file actions
executable file
·74 lines (66 loc) · 2.32 KB
/
Copy pathplex_space_survey.sh
File metadata and controls
executable file
·74 lines (66 loc) · 2.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/usr/bin/env bash
# plex_space_survey.sh — Survey disk usage on the NFS-mounted Plex library.
# Logs to ./logs/plex_survey_<timestamp>.log
#
# Usage: ./plex_space_survey.sh
# Env overrides: MOVIES_DIR, TVSHOWS_DIR, TOP_N, LOG_DIR
set -euo pipefail
MOVIES_DIR="${MOVIES_DIR:-/mnt/media/movies/primary}"
TVSHOWS_DIR="${TVSHOWS_DIR:-/mnt/media/tvshows/primary}"
TOP_N="${TOP_N:-30}"
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
LOG_DIR="${LOG_DIR:-$SCRIPT_DIR/logs}"
TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S)
LOG="$LOG_DIR/plex_survey_${TIMESTAMP}.log"
mkdir -p "$LOG_DIR"
exec > >(tee -a "$LOG") 2>&1
echo "========================================"
echo " Plex Space Survey"
echo " $(date)"
echo " Log: $LOG"
echo "========================================"
echo
# Verify mounts are accessible
ok=0
for dir in "$MOVIES_DIR" "$TVSHOWS_DIR"; do
if [[ -d "$dir" ]]; then
ok=$((ok+1))
else
echo "WARNING: Not accessible: $dir"
fi
done
[[ $ok -eq 0 ]] && { echo "ERROR: No mounts accessible."; exit 1; }
echo
# Disk usage for mount(s) — deduplicate if both dirs are on the same NFS mount
echo "=== Mount Disk Usage ==="
df -h "$MOVIES_DIR" "$TVSHOWS_DIR" 2>/dev/null | awk '!seen[$0]++'
echo
# --- Movies ---
if [[ -d "$MOVIES_DIR" ]]; then
echo "=== Movies — Top $TOP_N by Size ==="
find "$MOVIES_DIR" -maxdepth 1 -mindepth 1 -not -name '.*' -type d -print0 \
| xargs -0 du -sh 2>/dev/null \
| sort -rh \
| head -n "$TOP_N" || true
echo
movie_count=$(find "$MOVIES_DIR" -maxdepth 1 -mindepth 1 -not -name '.*' -type d | wc -l)
echo "Total movies: $movie_count titles"
echo "Total size: $(du -sh "$MOVIES_DIR" 2>/dev/null | cut -f1)"
echo
fi
# --- TV Shows ---
if [[ -d "$TVSHOWS_DIR" ]]; then
echo "=== TV Shows — Top $TOP_N by Size ==="
find "$TVSHOWS_DIR" -maxdepth 1 -mindepth 1 -not -name '.*' -type d -print0 \
| xargs -0 du -sh 2>/dev/null \
| sort -rh \
| head -n "$TOP_N" || true
echo
show_count=$(find "$TVSHOWS_DIR" -maxdepth 1 -mindepth 1 -not -name '.*' -type d | wc -l)
echo "Total shows: $show_count titles"
echo "Total size: $(du -sh "$TVSHOWS_DIR" 2>/dev/null | cut -f1)"
echo
fi
echo "========================================"
echo " Survey complete. Log: $LOG"
echo "========================================"