#!/bin/bash # Безопасная очистка диска — по списку из docs/disk_cleanup/DISK_CLEANUP.md. # НЕ трогает: Brave, Cursor History/workspaceStorage/extensions, Telegram, pnpm, anytype. set -e echo "🧹 Безопасная очистка диска (согласовано с DO_NOT_DELETE)" echo "==========================================================" echo "" cleanup_dir() { local dir="$1" local name="$2" if [ -d "$dir" ] || [ -f "$dir" ]; then size=$(du -sh "$dir" 2>/dev/null | cut -f1) echo "🗑️ Удаление $name ($size)..." rm -rf "$dir" 2>/dev/null && echo " ✅ $name очищен" || echo " ⚠️ Не удалось удалить $name" else echo " ℹ️ $name не найден, пропускаем" fi } echo "📊 Текущее состояние диска:" df -h / | tail -1 echo "" # 1. Кэши разработки: Colima, npm, node-gyp, TypeScript, pip, .yarn echo "=== 1. Кэши разработки ===" cleanup_dir "$HOME/.colima" "Colima кэш" cleanup_dir "$HOME/Library/Caches/colima" "Colima кэш (Library)" cleanup_dir "$HOME/.npm" "npm кэш" cleanup_dir "$HOME/Library/Caches/node-gyp" "node-gyp кэш" cleanup_dir "$HOME/Library/Caches/typescript" "TypeScript кэш" cleanup_dir "$HOME/Library/Caches/pip" "pip кэш" cleanup_dir "$HOME/.yarn" ".yarn кэш" echo "" # 2. Windsurf полностью (кэш + данные; приложение — удалить вручную из Программы) echo "=== 2. Windsurf полностью ===" cleanup_dir "$HOME/.codeium/windsurf" "Codeium/Windsurf кэш" cleanup_dir "$HOME/.windsurf" "Windsurf данные" cleanup_dir "$HOME/Library/Application Support/Windsurf" "Windsurf Application Support" # Если .codeium пуст — можно удалить целиком [ -d "$HOME/.codeium" ] && [ -z "$(ls -A "$HOME/.codeium" 2>/dev/null)" ] && rm -rf "$HOME/.codeium" && echo " ✅ .codeium (пустая) удалена" echo "" # 3. Кэши браузеров — только Google/Firefox (Brave в DO_NOT_DELETE) echo "=== 3. Кэши браузеров (не Brave) ===" cleanup_dir "$HOME/Library/Caches/Google" "Google кэш" cleanup_dir "$HOME/Library/Caches/Firefox" "Firefox кэш" cleanup_dir "$HOME/Library/Caches/com.brave.Browser" "com.brave.Browser кэш" echo "" # 4. Приложения — Notion, zoom, LibreOffice, Movavi, Ledger (Telegram в DO_NOT_DELETE) echo "=== 4. Кэши приложений ===" cleanup_dir "$HOME/Library/Application Support/Notion" "Notion" cleanup_dir "$HOME/Library/Application Support/zoom.us" "zoom.us" cleanup_dir "$HOME/Library/Application Support/LibreOffice" "LibreOffice" cleanup_dir "$HOME/Library/Application Support/Movavi" "Movavi" cleanup_dir "$HOME/Library/Application Support/Ledger Live" "Ledger Live" echo "" # 5. Cursor — только разрешённые кэши и state backup (~10 GB) echo "=== 5. Cursor кэши (только разрешённые) ===" STATE_BACKUP="$HOME/Library/Application Support/Cursor/User/globalStorage/state.vscdb.backup" if [ -f "$STATE_BACKUP" ]; then size=$(du -sh "$STATE_BACKUP" 2>/dev/null | cut -f1) echo " state.vscdb.backup ($size) — закрыть Cursor перед удалением!" read -p " Удалить state.vscdb.backup? (y/n): " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then rm -f "$STATE_BACKUP" && echo " ✅ state.vscdb.backup удалён" || echo " ⚠️ Закрой Cursor и повтори" else echo " ⏭️ Пропущено" fi fi cleanup_dir "$HOME/Library/Caches/com.todesktop.230313mzl4w4u92.ShipIt" "Cursor ShipIt" cleanup_dir "$HOME/Library/Application Support/Cursor/WebStorage" "Cursor WebStorage" cleanup_dir "$HOME/Library/Application Support/Cursor/Partitions" "Cursor Partitions" cleanup_dir "$HOME/.cursor/projects" "Cursor projects" echo "" # 6. Homebrew, .cache, пустые логи echo "=== 6. Homebrew, .cache, пустые логи ===" cleanup_dir "$HOME/Library/Caches/Homebrew" "Homebrew кэш" cleanup_dir "$HOME/.cache" ".cache" find "$HOME/Library/Logs" -type f -size 0 -delete 2>/dev/null && echo " ✅ Пустые логи удалены" || true echo "" # 7. ScreenRecordings (по желанию) echo "=== 7. Записи экрана ===" if [ -d "$HOME/Library/ScreenRecordings" ]; then count=$(find "$HOME/Library/ScreenRecordings" -type f 2>/dev/null | wc -l | tr -d ' ') if [ "$count" -gt 0 ]; then echo " Найдено файлов: $count" read -p " Удалить все записи экрана? (y/n): " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then cleanup_dir "$HOME/Library/ScreenRecordings" "Записи экрана" else echo " ⏭️ Пропущено" fi else echo " ℹ️ Папка пуста" fi fi echo "" # 8. Build артефакты (исключая hunabapp-dev/frontend/android — в DO_NOT_DELETE) echo "=== 8. Build артефакты в ~/code (кроме android) ===" read -p " Удалить build/dist/.next/out? (y/n): " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then find "$HOME/code" -type d \( -name "build" -o -name "dist" -o -name ".next" -o -name "out" \) \ -not -path "*/node_modules/*" \ -not -path "*/venv/*" \ -not -path "*/.venv/*" \ -not -path "*/site-packages/*" \ -not -path "*/env/*" \ -not -path "*/hunabapp-dev/frontend/android/*" \ -exec rm -rf {} + 2>/dev/null || true echo " ✅ Готово" else echo " ⏭️ Пропущено" fi echo "" # 9. node_modules (опционально; НЕ frontend — в DO_NOT_DELETE) echo "=== 9. node_modules (кроме hunabapp-dev/frontend) ===" read -p " Удалить node_modules в проектах? (y/n): " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then find "$HOME/code" -type d -name "node_modules" \ -not -path "*/venv/*" \ -not -path "*/.venv/*" \ -not -path "*/hunabapp-dev/frontend/node_modules" \ -exec rm -rf {} + 2>/dev/null || true echo " ✅ Готово. В нужных проектах: pnpm install" else echo " ⏭️ Пропущено" fi echo "" # 10. UTM виртуальная машина — опционально echo "=== 10. UTM виртуальная машина ===" if [ -d "$HOME/code/Parrot-home-mate-6.4_arm64.utm" ]; then read -p " Удалить UTM виртуальную машину? (y/n): " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then cleanup_dir "$HOME/code/Parrot-home-mate-6.4_arm64.utm" "UTM виртуальная машина" else echo " ⏭️ Пропущено" fi else echo " ℹ️ Не найдена" fi echo "" echo "==========================================================" echo "📊 Состояние диска после очистки:" df -h / | tail -1 echo "" echo "✅ Очистка завершена. Перезапустите приложения при необходимости." echo " Список: docs/disk_cleanup/DISK_CLEANUP.md" echo ""