Files
local_machine/docs/disk_cleanup/cleanup-disk-now.sh
2026-03-14 20:03:57 +03:00

168 lines
7.1 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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 ""