130 lines
4.0 KiB
Bash
Executable File
130 lines
4.0 KiB
Bash
Executable File
#!/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 <date>"
|
|
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 ""
|