168 lines
7.1 KiB
Bash
Executable File
168 lines
7.1 KiB
Bash
Executable File
#!/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 ""
|
||
|