#!/bin/bash # Find What's in System Data (351GB) # System Data includes snapshots, caches, logs, VM files, etc. set -e echo "=== Find System Data Usage (351GB) ===" echo "" echo "System Data on macOS includes:" echo " - APFS snapshots" echo " - Time Machine local snapshots" echo " - Virtual memory swap files" echo " - System caches" echo " - Log files" echo " - Purgeable space" echo "" TOTAL_FOUND=0 echo "🔍 Checking System Data Components:" echo "" # 1. Check APFS snapshots echo "1. APFS Snapshots:" APFS_SNAPS=$(diskutil apfs listSnapshots / 2>/dev/null | grep -c "Name:" || echo "0") echo " Found: $APFS_SNAPS snapshot(s)" if [ "$APFS_SNAPS" -gt 0 ]; then diskutil apfs listSnapshots / 2>/dev/null | grep -E "Name|Purgeable" | head -4 | sed 's/^/ /' fi echo "" # 2. Check Time Machine local snapshots echo "2. Time Machine Local Snapshots:" TM_SNAPS=$(tmutil listlocalsnapshots / 2>/dev/null | grep -v "Snapshots for disk" | grep -v "^$" | wc -l | tr -d ' ') echo " Found: $TM_SNAPS snapshot(s)" if [ "$TM_SNAPS" -gt 0 ]; then tmutil listlocalsnapshots / 2>/dev/null | grep -v "Snapshots for disk" | grep -v "^$" | sed 's/^/ - /' fi echo "" # 3. Check virtual memory (swap files) echo "3. Virtual Memory (Swap Files):" VM_SIZE=$(sudo du -sh /private/var/vm 2>/dev/null | awk '{print $1}' || echo "0") echo " /private/var/vm: $VM_SIZE" echo "" # 4. Check system caches echo "4. System Caches:" CACHE_SIZE=$(sudo du -sh /private/var/folders 2>/dev/null | awk '{print $1}' || echo "0") echo " /private/var/folders: $CACHE_SIZE" echo "" # 5. Check logs echo "5. System Logs:" LOG_SIZE=$(sudo du -sh /Library/Logs /private/var/log 2>/dev/null 2>/dev/null | awk '{sum+=$1} END {print sum}' || echo "0") echo " Logs: ~$LOG_SIZE" echo "" # 6. Check MobileBackups echo "6. MobileBackups (APFS Local Snapshots):" MB_SIZE=$(sudo du -sh /System/Volumes/Data/.MobileBackups /.MobileBackups 2>/dev/null | awk '{sum+=$1} END {print sum}' || echo "0") if [ "$MB_SIZE" != "0" ] && [ -n "$MB_SIZE" ]; then echo " MobileBackups: $MB_SIZE" else echo " MobileBackups: Not found or empty" fi echo "" # 7. Check /private/var echo "7. /private/var (System Data):" PVAR_SIZE=$(sudo du -sh /System/Volumes/Data/private/var 2>/dev/null | awk '{print $1}' || echo "0") echo " /private/var: $PVAR_SIZE" echo "" # 8. Check for sparse bundles echo "8. Sparse Bundles (Disk Images):" SPARSE_COUNT=$(sudo find /System/Volumes/Data -maxdepth 3 -name "*.sparsebundle" -o -name "*.sparseimage" 2>/dev/null | wc -l | tr -d ' ') echo " Found: $SPARSE_COUNT sparse bundle(s)" if [ "$SPARSE_COUNT" -gt 0 ]; then sudo find /System/Volumes/Data -maxdepth 3 -name "*.sparsebundle" -o -name "*.sparseimage" 2>/dev/null | head -5 | while read bundle; do SIZE=$(sudo du -sh "$bundle" 2>/dev/null | awk '{print $1}') echo " - $bundle ($SIZE)" done fi echo "" # 9. Check Library echo "9. System Library:" LIB_SIZE=$(sudo du -sh /System/Volumes/Data/Library 2>/dev/null | awk '{print $1}' || echo "0") echo " /Library: $LIB_SIZE" echo "" echo "=== Summary ===" echo "" echo "System Data is 351GB. The components above may not add up to 351GB" echo "because System Data also includes:" echo " - Purgeable space (not shown in du)" echo " - APFS snapshot overhead" echo " - Reserved space" echo " - Other system files" echo "" echo "🔧 To Reduce System Data:" echo "" echo "1. Delete Time Machine local snapshots:" if [ "$TM_SNAPS" -gt 0 ]; then echo " sudo tmutil deletelocalsnapshots " else echo " (No snapshots found)" fi echo "" echo "2. Thin local snapshots:" echo " sudo tmutil thinlocalsnapshots / 1000000000 1" echo "" echo "3. Remove Time Machine destination (prevents new snapshots):" echo " System Settings → Time Machine → Remove backup disk" echo "" echo "4. Clean system caches:" echo " sudo rm -rf /private/var/folders/*" echo " (⚠️ Be careful - this may affect running apps)" echo "" echo "5. Restart your Mac:" echo " This often releases purgeable space and snapshots" echo ""