Files
nas-tools/fix_os_snapshot_issue.sh
T

117 lines
3.6 KiB
Bash
Executable File

#!/bin/bash
# Fix OS Update Snapshot Issue (351GB System Data)
# The OS update snapshot is preventing space from being freed
set -e
echo "=== Fix OS Update Snapshot Issue ==="
echo ""
echo "Your disk layout shows:"
echo " - Container: 494.4 GB"
echo " - Data volume: 472.5 GB"
echo " - System volume: 12.2 GB"
echo " - OS Update Snapshot: 12.2 GB (NOT purgeable)"
echo ""
echo "The 351GB in System Data is likely snapshot overhead"
echo "that can't be freed until the snapshot is cleared."
echo ""
FREE_SPACE_BEFORE=$(df / | tail -1 | awk '{print $4}')
FREE_SPACE_GB_BEFORE=$(echo "scale=2; $FREE_SPACE_BEFORE / 1024 / 1024" | bc)
echo "Current free space: ${FREE_SPACE_GB_BEFORE}GB"
echo ""
echo "🔍 Checking for macOS updates..."
UPDATES=$(softwareupdate --list 2>/dev/null | grep -i "update" | head -5)
if [ -n "$UPDATES" ]; then
echo " Found available updates:"
echo "$UPDATES" | sed 's/^/ /'
echo ""
echo " ✅ SOLUTION: Install macOS updates"
echo " This will create a new snapshot and clear the old one"
echo " System Settings → General → Software Update"
else
echo " No updates found (or check failed)"
fi
echo ""
echo "🔧 Immediate Space Savings:"
echo ""
# Check macOS Install Data
INSTALL_DATA="/System/Volumes/Data/macOS Install Data"
if [ -d "$INSTALL_DATA" ]; then
SIZE=$(sudo du -sh "$INSTALL_DATA" 2>/dev/null | awk '{print $1}')
echo " 1. Delete macOS Install Data: $SIZE"
echo " sudo rm -rf \"$INSTALL_DATA\""
echo " (Safe to delete after installation completes)"
echo ""
read -p " Delete macOS Install Data now? (y/n) " -n 1 -r
echo ""
if [[ $REPLY =~ ^[Yy]$ ]]; then
echo " Deleting..."
sudo rm -rf "$INSTALL_DATA" 2>/dev/null && \
echo " ✅ Deleted ($SIZE freed)" || \
echo " ⚠️ Could not delete (may be in use)"
fi
else
echo " 1. macOS Install Data: Not found"
fi
echo ""
echo "📊 Understanding the Problem:"
echo ""
echo "The OS update snapshot (12.2GB visible) is holding much more"
echo "space as 'overhead' or 'purgeable' that shows up in System Data."
echo ""
echo "APFS snapshots work by:"
echo " - Preserving deleted files"
echo " - Taking up space until cleared"
echo " - The OS update snapshot can't be deleted manually"
echo ""
echo "The 351GB in System Data includes:"
echo " - Snapshot overhead (space held by the snapshot)"
echo " - Purgeable space (that can't be purged due to snapshot)"
echo " - System reserved space"
echo ""
echo "=== Solutions ==="
echo ""
echo "Option 1: Install macOS Updates (Recommended)"
echo " - System Settings → General → Software Update"
echo " - Install any available updates"
echo " - This will clear the old snapshot"
echo " - Should free the 351GB"
echo ""
echo "Option 2: Wait for Automatic Cleanup"
echo " - macOS may clear old snapshots automatically"
echo " - But this can take weeks or months"
echo ""
echo "Option 3: Free Other Space First"
echo " - Clean Downloads: 8.7GB"
echo " - Clean Caches: ~6GB"
echo " - Review Documents: 40GB"
echo " - This gives you ~55GB to work with"
echo ""
echo "Option 4: Check Storage Management Details"
echo " - Apple Menu → About This Mac → Storage"
echo " - Hover over 'System Data' for breakdown"
echo " - May show 'Purgeable' or 'Snapshots'"
echo ""
# Check final space
sleep 2
FREE_SPACE_AFTER=$(df / | tail -1 | awk '{print $4}')
FREE_SPACE_GB_AFTER=$(echo "scale=2; $FREE_SPACE_AFTER / 1024 / 1024" | bc)
FREED_GB=$(echo "scale=2; $FREE_SPACE_GB_AFTER - $FREE_SPACE_GB_BEFORE" | bc)
if (( $(echo "$FREED_GB > 0" | bc -l) )); then
echo "✅ Freed: ${FREED_GB}GB"
fi
echo ""