Files
nas-tools/use_external_drive.sh
T

121 lines
3.2 KiB
Bash
Executable File

#!/bin/bash
# Use External Drive to Free Space for Update
set -e
echo "=== Use External Drive for Update ==="
echo ""
echo "External drive detected! This is your solution."
echo ""
# Find external drive
EXTERNAL_VOLUMES=$(ls -d /Volumes/* 2>/dev/null | grep -v -E "Macintosh|Preboot|Recovery|VM|Download" || echo "")
if [ -z "$EXTERNAL_VOLUMES" ]; then
echo "⚠️ No external volumes found mounted"
echo ""
echo "Please:"
echo " 1. Connect your external USB drive"
echo " 2. Wait for it to mount"
echo " 3. Run this script again"
exit 1
fi
echo "Found external volume(s):"
echo "$EXTERNAL_VOLUMES" | while read vol; do
SIZE=$(df -h "$vol" 2>/dev/null | tail -1 | awk '{print $2}')
FREE=$(df -h "$vol" 2>/dev/null | tail -1 | awk '{print $4}')
echo " - $vol ($SIZE total, $FREE free)"
done
echo ""
# Use first external volume
EXTERNAL_VOL=$(echo "$EXTERNAL_VOLUMES" | head -1)
echo "Using: $EXTERNAL_VOL"
echo ""
FREE_SPACE=$(df / | tail -1 | awk '{print $4}')
FREE_SPACE_GB=$(echo "scale=2; $FREE_SPACE / 1024 / 1024" | bc)
echo "Current Mac free space: ${FREE_SPACE_GB}GB"
echo "Need: 17.64GB"
echo ""
echo "📦 Large files you can move to external drive:"
echo ""
echo " Downloads: 8.7GB"
echo " .ollama: 17GB"
echo " .local: 18GB"
echo " Total: ~44GB"
echo ""
echo "🔧 Steps:"
echo ""
echo "1. Move large files to external drive:"
echo " mv ~/Downloads \"$EXTERNAL_VOL/Downloads_backup\""
echo " mv ~/.ollama \"$EXTERNAL_VOL/ollama_backup\""
echo " mv ~/.local \"$EXTERNAL_VOL/local_backup\""
echo ""
echo "2. This should free ~44GB on Mac"
echo ""
echo "3. Install macOS update"
echo ""
echo "4. After update clears snapshot, move files back"
echo ""
read -p "Move Downloads, .ollama, and .local to external drive? (y/n) " -n 1 -r
echo ""
if [[ $REPLY =~ ^[Yy]$ ]]; then
echo ""
echo "Moving files..."
# Move Downloads
if [ -d ~/Downloads ]; then
echo "Moving Downloads (8.7GB)..."
mv ~/Downloads "$EXTERNAL_VOL/Downloads_backup" && \
echo " ✅ Moved Downloads" || \
echo " ⚠️ Error moving Downloads"
mkdir ~/Downloads
fi
# Move .ollama
if [ -d ~/.ollama ]; then
echo "Moving .ollama (17GB)..."
mv ~/.ollama "$EXTERNAL_VOL/ollama_backup" && \
echo " ✅ Moved .ollama" || \
echo " ⚠️ Error moving .ollama"
fi
# Move .local
if [ -d ~/.local ]; then
echo "Moving .local (18GB)..."
mv ~/.local "$EXTERNAL_VOL/local_backup" && \
echo " ✅ Moved .local" || \
echo " ⚠️ Error moving .local"
fi
echo ""
echo "⏳ Waiting for space to update..."
sleep 5
NEW_FREE=$(df / | tail -1 | awk '{print $4}')
NEW_FREE_GB=$(echo "scale=2; $NEW_FREE / 1024 / 1024" | bc)
echo ""
echo "New free space: ${NEW_FREE_GB}GB"
echo ""
if (( $(echo "$NEW_FREE_GB > 17" | bc -l) )); then
echo "✅ Enough space! Now install update:"
echo " System Settings → General → Software Update"
echo " OR"
echo " sudo softwareupdate --download --all"
else
echo "⚠️ Still not enough. May need to move more files."
fi
else
echo "Cancelled."
fi
echo ""