Initial commit: local_machine docs and scripts

This commit is contained in:
ahauimix
2026-03-14 20:03:57 +03:00
commit a39ef89125
85 changed files with 14500 additions and 0 deletions

View File

@@ -0,0 +1,356 @@
#!/bin/bash
# Скрипт для сканирования элементов, которые можно безопасно удалить при регулярной очистке
# Основано на всех итерациях очистки диска
# Цвета для вывода
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color
echo "=========================================="
echo " Сканирование элементов для регулярной очистки"
echo "=========================================="
echo ""
TOTAL_SIZE=0
ITEMS_FOUND=0
# Функция для сканирования директории
scan_dir() {
local path="$1"
local name="$2"
local exclude_protected="$3"
if [ ! -d "$path" ]; then
return
fi
# Проверка на защищенные элементы
if [ "$exclude_protected" = "true" ]; then
# Проверяем, не является ли это защищенным элементом
case "$path" in
*"/BraveSoftware"*) return ;;
*"/Cursor/User/History"*) return ;;
*"/Cursor/User/workspaceStorage"*) return ;;
*"/Cursor/extensions"*) return ;;
*"/Cursor/logs"*) return ;;
*"/Cursor/CachedData"*) return ;;
*"/.cursor/ai-tracking"*) return ;;
*"/pnpm"*) return ;;
*"/hunabapp-dev/frontend/node_modules"*) return ;;
*"/.gradle"*) return ;;
*"/hunabapp-dev/frontend/android/app/build"*) return ;;
*"/Telegram Desktop"*) return ;;
*"/anytype"*) return ;;
*"/direct-commander"*) return ;;
*"/backup_"*) return ;;
*"/archives_"*) return ;;
*"/methatron/pics/tablecloth/1-7.zip"*) return ;;
esac
fi
local size=$(du -sm "$path" 2>/dev/null | cut -f1)
if [ -n "$size" ] && [ "$size" -gt 0 ]; then
local size_mb=$size
local size_gb=$(echo "scale=2; $size / 1024" | bc 2>/dev/null || echo "0")
printf " %-60s %8sMB (%sGB)\n" "$name" "$size_mb" "$size_gb"
TOTAL_SIZE=$((TOTAL_SIZE + size))
((ITEMS_FOUND++))
fi
}
# Функция для сканирования файлов по паттерну
scan_files() {
local pattern="$1"
local name="$2"
local exclude_protected="$3"
local total=0
while IFS= read -r file; do
if [ -n "$file" ] && [ -f "$file" ]; then
# Проверка на защищенные элементы
if [ "$exclude_protected" = "true" ]; then
case "$file" in
*"/backup_"*) continue ;;
*"/archives_"*) continue ;;
*"/methatron/pics/tablecloth/1-7.zip"*) continue ;;
*"/legal/legal_education/books/Martin/.../Дополнительный урок по маркам.rar"*) continue ;;
esac
fi
local size=$(du -sm "$file" 2>/dev/null | cut -f1)
if [ -n "$size" ] && [ "$size" -gt 0 ]; then
total=$((total + size))
fi
fi
done < <(find ~/code -type f $pattern 2>/dev/null | head -20)
if [ "$total" -gt 0 ]; then
local size_gb=$(echo "scale=2; $total / 1024" | bc 2>/dev/null || echo "0")
printf " %-60s %8sMB (%sGB)\n" "$name" "$total" "$size_gb"
TOTAL_SIZE=$((TOTAL_SIZE + total))
((ITEMS_FOUND++))
fi
}
echo -e "${CYAN}=== КРИТИЧЕСКИЙ ПРИОРИТЕТ (кэши разработки) ===${NC}"
echo ""
# npm кэш
scan_dir "$HOME/.npm" "npm кэш" true
scan_dir "$HOME/.npm/_npx" "npm npx кэш" true
# node-gyp кэш
scan_dir "$HOME/Library/Caches/node-gyp" "node-gyp кэш" true
# TypeScript кэш
scan_dir "$HOME/Library/Caches/typescript" "TypeScript кэш" true
# pip кэш
scan_dir "$HOME/Library/Caches/pip" "pip кэш" true
# .yarn кэш
scan_dir "$HOME/.yarn" ".yarn кэш" true
# Colima кэш
scan_dir "$HOME/.colima" "Colima кэш" true
scan_dir "$HOME/Library/Caches/colima" "Colima кэш (Library)" true
# Codeium/Windsurf кэши
scan_dir "$HOME/.codeium/windsurf" "Codeium/Windsurf кэш" true
echo ""
echo -e "${CYAN}=== node_modules (исключая защищенные) ===${NC}"
echo ""
# node_modules (исключая защищенные)
find ~/code -type d -name "node_modules" \
-not -path "*/venv/*" \
-not -path "*/.venv/*" \
-not -path "*/env/*" \
-not -path "*/hunabapp-dev/frontend/node_modules" \
-exec du -sh {} \; 2>/dev/null | sort -hr | head -5 | while read size path; do
printf " %-60s %8s\n" "$path" "$size"
local size_mb=$(du -sm "$path" 2>/dev/null | cut -f1)
if [ -n "$size_mb" ]; then
TOTAL_SIZE=$((TOTAL_SIZE + size_mb))
((ITEMS_FOUND++))
fi
done
echo ""
echo -e "${CYAN}=== BUILD АРТЕФАКТЫ (исключая защищенные) ===${NC}"
echo ""
# Build артефакты (исключая защищенные)
find ~/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 "*/env/*" \
-not -path "*/site-packages/*" \
-not -path "*/hunabapp-dev/frontend/android/app/build*" \
-exec du -sh {} \; 2>/dev/null | sort -hr | head -10 | while read size path; do
printf " %-60s %8s\n" "$path" "$size"
local size_mb=$(du -sm "$path" 2>/dev/null | cut -f1)
if [ -n "$size_mb" ]; then
TOTAL_SIZE=$((TOTAL_SIZE + size_mb))
((ITEMS_FOUND++))
fi
done
echo ""
echo -e "${CYAN}=== КЭШИ БРАУЗЕРОВ (кроме защищенных) ===${NC}"
echo ""
# Google Chrome кэш
scan_dir "$HOME/Library/Caches/Google" "Google Chrome кэш" true
# Firefox кэш
scan_dir "$HOME/Library/Caches/Firefox" "Firefox кэш" true
# com.brave.Browser кэш (отдельный, не основной)
scan_dir "$HOME/Library/Caches/com.brave.Browser" "Brave Browser кэш (отдельный)" true
echo ""
echo -e "${CYAN}=== КЭШИ ПРИЛОЖЕНИЙ ===${NC}"
echo ""
# Notion
scan_dir "$HOME/Library/Application Support/Notion" "Notion кэш" true
# zoom.us
scan_dir "$HOME/Library/Application Support/zoom.us" "zoom.us кэш" true
# LibreOffice
scan_dir "$HOME/Library/Application Support/LibreOffice" "LibreOffice кэш" true
# Movavi
scan_dir "$HOME/Library/Application Support/Movavi" "Movavi кэш" true
# Ledger Live
scan_dir "$HOME/Library/Application Support/Ledger Live" "Ledger Live кэш" true
# Syncthing
scan_dir "$HOME/Library/Application Support/Syncthing" "Syncthing кэш" true
# ResponsivelyApp
scan_dir "$HOME/Library/Application Support/ResponsivelyApp" "ResponsivelyApp кэш" true
echo ""
echo -e "${CYAN}=== CURSOR КЭШИ (кроме защищенных) ===${NC}"
echo ""
# Cursor WebStorage
scan_dir "$HOME/Library/Application Support/Cursor/WebStorage" "Cursor WebStorage" true
# Cursor Partitions
scan_dir "$HOME/Library/Application Support/Cursor/Partitions" "Cursor Partitions" true
# Cursor projects
scan_dir "$HOME/.cursor/projects" "Cursor projects" true
# Cursor CachedExtensionVSIXs
scan_dir "$HOME/Library/Application Support/Cursor/CachedExtensionVSIXs" "Cursor CachedExtensionVSIXs" true
# Cursor logs (старые, если есть)
if [ -d "$HOME/Library/Application Support/Cursor/logs" ]; then
local logs_size=$(du -sm "$HOME/Library/Application Support/Cursor/logs" 2>/dev/null | cut -f1)
if [ -n "$logs_size" ] && [ "$logs_size" -gt 10 ]; then
printf " %-60s %8sMB\n" "Cursor logs (старые)" "$logs_size"
TOTAL_SIZE=$((TOTAL_SIZE + logs_size))
((ITEMS_FOUND++))
fi
fi
# ShipIt кэш
scan_dir "$HOME/Library/Caches/com.todesktop.230313mzl4w4u92.ShipIt" "Cursor ShipIt кэш" true
echo ""
echo -e "${CYAN}=== СИСТЕМНЫЕ КЭШИ ===${NC}"
echo ""
# Homebrew кэш
scan_dir "$HOME/Library/Caches/Homebrew" "Homebrew кэш" true
# GeoServices кэш
scan_dir "$HOME/Library/Caches/GeoServices" "GeoServices кэш" true
# Apple системные кэши
scan_dir "$HOME/Library/Caches/com.apple.helpd" "com.apple.helpd" true
scan_dir "$HOME/Library/Caches/com.apple.parsecd" "com.apple.parsecd" true
scan_dir "$HOME/Library/Caches/com.apple.appstoreagent" "com.apple.appstoreagent" true
scan_dir "$HOME/Library/Caches/com.apple.CloudTelemetry" "com.apple.CloudTelemetry" true
scan_dir "$HOME/Library/Caches/com.apple.AMPLibraryAgent" "com.apple.AMPLibraryAgent" true
scan_dir "$HOME/Library/Caches/com.apple.AppleMediaServices" "com.apple.AppleMediaServices" true
scan_dir "$HOME/Library/Caches/com.apple.ctcategories.service" "com.apple.ctcategories.service" true
scan_dir "$HOME/Library/Caches/com.apple.amsengagementd" "com.apple.amsengagementd" true
scan_dir "$HOME/Library/Caches/com.apple.tipsd" "com.apple.tipsd" true
scan_dir "$HOME/Library/Caches/com.apple.itunescloudd" "com.apple.itunescloudd" true
scan_dir "$HOME/Library/Caches/com.apple.nbagent" "com.apple.nbagent" true
scan_dir "$HOME/Library/Caches/askpermissiond" "askpermissiond" true
scan_dir "$HOME/Library/Caches/com.apple.python" "com.apple.python" true
scan_dir "$HOME/Library/Caches/audioCache.kcache" "audioCache.kcache" true
scan_dir "$HOME/Library/Caches/Mega" "Mega кэш" true
scan_dir "$HOME/Library/Caches/kdenlive" "kdenlive кэш" true
echo ""
echo -e "${CYAN}=== ЛОГИ ===${NC}"
echo ""
# Логи Google
scan_dir "$HOME/Library/Logs/Google" "Логи Google" true
# Пустые логи
local empty_logs=$(find ~/Library/Logs -type f -size 0 2>/dev/null | wc -l | tr -d ' ')
if [ "$empty_logs" -gt 0 ]; then
printf " %-60s %8s файлов\n" "Пустые логи" "$empty_logs"
fi
echo ""
echo -e "${CYAN}=== PYTHON КЭШИ ===${NC}"
echo ""
# __pycache__ в venv
find ~/code -type d -name "__pycache__" \
-path "*/venv/*" -o -path "*/.venv/*" -o -path "*/env/*" \
-exec du -sh {} \; 2>/dev/null | sort -hr | head -10 | while read size path; do
printf " %-60s %8s\n" "$path" "$size"
local size_mb=$(du -sm "$path" 2>/dev/null | cut -f1)
if [ -n "$size_mb" ]; then
TOTAL_SIZE=$((TOTAL_SIZE + size_mb))
((ITEMS_FOUND++))
fi
done
echo ""
echo -e "${CYAN}=== ЗАПИСИ ЭКРАНА ===${NC}"
echo ""
# ScreenRecordings
scan_dir "$HOME/Library/ScreenRecordings" "ScreenRecordings" true
echo ""
echo -e "${CYAN}=== СТАРЫЕ АРХИВЫ (опционально) ===${NC}"
echo ""
# Старые архивы (исключая защищенные)
find ~/code -type f \( -name "*.zip" -o -name "*.rar" -o -name "*.tar.gz" -o -name "*.7z" \) \
-not -path "*/backup_*" \
-not -path "*/archives_*" \
-not -path "*/methatron/pics/tablecloth/1-7.zip" \
-size +10M \
-exec du -sh {} \; 2>/dev/null | sort -hr | head -10 | while read size path; do
printf " %-60s %8s\n" "$path" "$size"
local size_mb=$(du -sm "$path" 2>/dev/null | cut -f1)
if [ -n "$size_mb" ]; then
TOTAL_SIZE=$((TOTAL_SIZE + size_mb))
((ITEMS_FOUND++))
fi
done
echo ""
echo -e "${CYAN}=== GIT РЕПОЗИТОРИИ (для оптимизации, не удаление) ===${NC}"
echo ""
# Git репозитории для оптимизации
find ~/code -type d -name ".git" -exec sh -c '
repo=$(dirname "$1")
git_size=$(du -sm "$repo/.git" 2>/dev/null | cut -f1)
if [ -n "$git_size" ] && [ "$git_size" -gt 100 ]; then
printf " %-60s %8sMB\n" "$repo" "$git_size"
fi
' _ {} \; 2>/dev/null | sort -k2 -nr | head -5
echo ""
echo "=========================================="
echo -e " ${GREEN}ИТОГИ СКАНИРОВАНИЯ${NC}"
echo "=========================================="
echo ""
echo -e "Найдено элементов для очистки: ${YELLOW}$ITEMS_FOUND${NC}"
echo ""
if [ "$TOTAL_SIZE" -gt 0 ]; then
local total_gb=$(echo "scale=2; $TOTAL_SIZE / 1024" | bc 2>/dev/null || echo "0")
echo -e "Общий размер: ${GREEN}${TOTAL_SIZE}MB (~${total_gb}GB)${NC}"
else
echo -e "Общий размер: ${GREEN}0MB${NC}"
fi
echo ""
echo -e "${YELLOW}⚠️ ВАЖНО:${NC}"
echo " - Защищённые элементы (см. DISK_CLEANUP.md) исключены из сканирования"
echo " - Проверьте список перед удалением"
echo " - Некоторые элементы могут быть пересозданы автоматически"
echo ""
echo -e "${BLUE}💡 РЕКОМЕНДАЦИИ:${NC}"
echo " - Для регулярной очистки используйте: REGULAR_CLEANUP.md"
echo " - Главный документ: DISK_CLEANUP.md"
echo ""