#!/bin/bash # Emergency Free Space - When Time Machine is stuck and consuming space # This script provides the quickest way to free space set -e echo "=== Emergency Free Space Fix ===" echo "" echo "Time Machine is stuck and holding your deleted file space." 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 "🔧 Solution: Remove Time Machine destination to free the stuck snapshot" echo "" echo "The snapshot is stuck because Time Machine can't connect to your NAS." echo "Removing the destination will allow the snapshot to be deleted." echo "" read -p "Have you removed the Time Machine destination in System Settings? (y/n) " -n 1 -r echo "" if [[ ! $REPLY =~ ^[Yy]$ ]]; then echo "" echo "Please do this now:" echo "1. Open System Settings → General → Time Machine" echo "2. Click the '-' button to remove the backup disk" echo "3. Confirm removal" echo "" echo "Then run this script again." exit 1 fi echo "" echo "⏳ Waiting for Time Machine to fully disconnect..." sleep 5 # Kill any remaining backup processes echo "🛑 Stopping any remaining Time Machine processes..." sudo killall backupd 2>/dev/null || true sleep 2 # Try to delete the snapshot now echo "" echo "🗑️ Attempting to delete stuck snapshot..." SNAPSHOTS=$(tmutil listlocalsnapshots / 2>/dev/null | grep -v "Snapshots for disk" | grep -v "^$") if [ -n "$SNAPSHOTS" ]; then echo "$SNAPSHOTS" | while read snapshot; do if [ -n "$snapshot" ]; then SNAP_DATE=$(echo "$snapshot" | sed 's/.*\.\([0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{6\}\)\.backup/\1/') if [ -n "$SNAP_DATE" ]; then echo " Deleting: $snapshot" if sudo tmutil deletelocalsnapshots "$SNAP_DATE" 2>/dev/null; then echo " ✅ Successfully deleted!" else echo " ⚠️ Still stuck. Try restarting your Mac." fi fi fi done else echo " ✅ No snapshots found" fi echo "" echo "📊 Checking results..." sleep 3 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) echo "" echo "=== Results ===" echo " Before: ${FREE_SPACE_GB_BEFORE}GB free" echo " After: ${FREE_SPACE_GB_AFTER}GB free" if (( $(echo "$FREED_GB > 15" | bc -l) )); then echo " ✅ Successfully freed: ${FREED_GB}GB" echo "" echo " Your 20GB from deleted files should now be available!" elif (( $(echo "$FREED_GB > 0" | bc -l) )); then echo " ✅ Freed: ${FREED_GB}GB" echo " (May need restart to free remaining space)" else echo " ⚠️ Space not freed yet" echo "" echo " Try restarting your Mac - this often releases stuck snapshots." fi echo "" echo "=== Next Steps ===" echo "" echo "1. After space is freed, fix Time Machine connection:" echo " See: time_machine_troubleshooting.md" echo "" echo "2. Common fixes for NAS connection:" echo " - Clear credentials: Keychain Access → search 'DS224plus' → delete" echo " - Re-add Time Machine: System Settings → Time Machine → Add Backup Disk" echo "" echo "3. Once connection is fixed, Time Machine will work properly." echo ""