Expand local_machine docs and automation for connectivity, games, and ops.
Add proxy/VPN/telegram launchd and emergency runbooks; reorganize apps docs; document JA3 CrossOver runbook and Wine troubleshooting; add GOG/HoMM game scripts, disk cleanup guides, and gitea push-via-proxy helper. Ignore temp/. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# 🧹 Очистка диска Mac — сводный гайд
|
||||
|
||||
Один документ: что не трогать, что можно удалять, быстрые команды, скрипты.
|
||||
**Скрипт:** [cleanup-disk-now.sh](./cleanup-disk-now.sh) · **Спец. фикс:** [ANYTYPE_WORKSPACE_FIX.md](./ANYTYPE_WORKSPACE_FIX.md) · **История:** [CHANGELOG.md](./CHANGELOG.md)
|
||||
**Запрещено удалять:** [DO_NOT_DELETE.md](./DO_NOT_DELETE.md) · **Скрипт:** [cleanup-disk-now.sh](./cleanup-disk-now.sh) · **Спец. фикс:** [ANYTYPE_WORKSPACE_FIX.md](./ANYTYPE_WORKSPACE_FIX.md) · **История:** [CHANGELOG.md](./CHANGELOG.md)
|
||||
|
||||
---
|
||||
|
||||
@@ -20,8 +20,13 @@
|
||||
|
||||
## ❌ Что НЕ удалять
|
||||
|
||||
**Полный белый список:** [DO_NOT_DELETE.md](./DO_NOT_DELETE.md)
|
||||
|
||||
Краткая выжимка:
|
||||
|
||||
| Категория | Пути | Причина |
|
||||
|-----------|------|---------|
|
||||
| **Thunderbird** | `~/Library/Thunderbird/`, `Profiles/*/Mail/*/Inbox` | Почта, не кэш |
|
||||
| Brave | `~/Library/Application Support/BraveSoftware`, `~/Library/Caches/BraveSoftware` | Настройки, закладки, история |
|
||||
| Cursor History | `~/Library/Application Support/Cursor/User/History` | История изменений файлов |
|
||||
| Cursor workspaceStorage | `~/Library/Application Support/Cursor/User/workspaceStorage` | Настройки workspace |
|
||||
@@ -64,7 +69,10 @@
|
||||
|-----|------|----------|
|
||||
| ShipIt (Cursor) | `~/Library/Caches/com.todesktop.230313mzl4w4u92.ShipIt` | 768 MB |
|
||||
| anytype-updater | `~/Library/Caches/anytype-updater` | 453 MB |
|
||||
| com.brave.Browser | `~/Library/Caches/com.brave.Browser` | 423 MB |
|
||||
| ms-playwright | `~/Library/Caches/ms-playwright` | ~800 MB |
|
||||
| responsivelyapp-updater | `~/Library/Caches/responsivelyapp-updater` | ~100 MB |
|
||||
| ResponsivelyApp | `~/Library/Application Support/ResponsivelyApp` | ~90 MB |
|
||||
| GeoServices | `~/Library/Caches/GeoServices` | ~45 MB |
|
||||
| Firefox | `~/Library/Caches/Firefox` | 83 MB |
|
||||
| Google | `~/Library/Caches/Google` | — |
|
||||
| Homebrew | `~/Library/Caches/Homebrew` | — |
|
||||
@@ -136,7 +144,8 @@ rm -f "$HOME/Library/Application Support/Cursor/User/globalStorage/state.vscdb.b
|
||||
# Library/Caches (не Brave)
|
||||
rm -rf "$HOME/Library/Caches/com.todesktop.230313mzl4w4u92.ShipIt"
|
||||
rm -rf "$HOME/Library/Caches/anytype-updater"
|
||||
rm -rf "$HOME/Library/Caches/com.brave.Browser"
|
||||
rm -rf "$HOME/Library/Caches/ms-playwright"
|
||||
rm -rf "$HOME/Library/Caches/responsivelyapp-updater"
|
||||
rm -rf "$HOME/Library/Caches/Firefox"
|
||||
rm -rf "$HOME/Library/Caches/Google"
|
||||
rm -rf "$HOME/Library/Caches/Homebrew"
|
||||
@@ -157,7 +166,7 @@ find "$HOME/Library/Logs" -type f -size 0 -delete 2>/dev/null
|
||||
## 🔄 Регулярность очистки
|
||||
|
||||
- **Еженедельно:** build-артефакты, пустые логи.
|
||||
- **Ежемесячно:** кэши разработки (npm, node-gyp, TypeScript, pip, .yarn), Library/Caches (Google, Firefox, ShipIt, anytype-updater), Cursor WebStorage/Partitions/projects.
|
||||
- **Ежемесячно:** кэши разработки (npm, node-gyp, TypeScript, pip, .yarn), Library/Caches (Google, Firefox, ShipIt, anytype-updater, ms-playwright, responsivelyapp-updater), Cursor WebStorage/Partitions/projects, уровень 1 из cleanup-disk-now.sh.
|
||||
- **При заполнении диска >80%:** всё из ежемесячного + Colima (если не нужен), state.vscdb.backup, приложения (Notion, zoom, LibreOffice, Movavi, Ledger), записи экрана.
|
||||
|
||||
---
|
||||
@@ -172,7 +181,8 @@ find "$HOME/Library/Logs" -type f -size 0 -delete 2>/dev/null
|
||||
|
||||
| Файл | Назначение |
|
||||
|------|------------|
|
||||
| [cleanup-disk-now.sh](./cleanup-disk-now.sh) | Интерактивная безопасная очистка (согласовано с DO_NOT_DELETE) |
|
||||
| [DO_NOT_DELETE.md](./DO_NOT_DELETE.md) | **Запрещено удалять** — белый список |
|
||||
| [cleanup-disk-now.sh](./cleanup-disk-now.sh) | Интерактивная безопасная очистка (см. DO_NOT_DELETE.md) |
|
||||
| [scripts/scan-cleanup-items.sh](./scripts/scan-cleanup-items.sh) | Сканирование: что можно удалить и размеры |
|
||||
| [scripts/compress-screenrecordings.sh](./scripts/compress-screenrecordings.sh) | Сжатие записей экрана |
|
||||
| [scripts/quick-cleanup-asahi.sh](./scripts/quick-cleanup-asahi.sh) | Быстрая очистка под Asahi |
|
||||
|
||||
204
docs/disk_cleanup/DO_NOT_DELETE.md
Normal file
204
docs/disk_cleanup/DO_NOT_DELETE.md
Normal file
@@ -0,0 +1,204 @@
|
||||
# ⛔ Запрещено удалять при очистке диска
|
||||
|
||||
**Источник истины** для [cleanup-disk-now.sh](./cleanup-disk-now.sh), [scan-cleanup-items.sh](./scripts/scan-cleanup-items.sh) и любых ручных `rm`.
|
||||
|
||||
Сводный гайд по безопасной очистке: [DISK_CLEANUP.md](./DISK_CLEANUP.md).
|
||||
|
||||
---
|
||||
|
||||
## Правила
|
||||
|
||||
1. **Не удалять целиком** пути из таблиц ниже — только явно разрешённые подпути из [DISK_CLEANUP.md](./DISK_CLEANUP.md).
|
||||
2. Скрипты очистки **обязаны** сверяться с этим файлом перед добавлением новых `rm`.
|
||||
3. При сомнении — **не удалять**; перенести на внешний диск ([scan-move-candidates.sh](./scripts/scan-move-candidates.sh)).
|
||||
4. **Фото и видео** (личные медиа) — отдельная политика: не трогать без явного решения пользователя (см. раздел «Медиа»).
|
||||
|
||||
---
|
||||
|
||||
## Почта — Thunderbird
|
||||
|
||||
| Путь | Ориентир | Причина |
|
||||
|------|----------|---------|
|
||||
| `~/Library/Thunderbird/` | ~2 GB | Профили, настройки, локальная почта |
|
||||
| `~/Library/Thunderbird/Profiles/*/Mail/` | — | Все папки ящиков (Inbox, Sent, …) |
|
||||
| `~/Library/Thunderbird/Profiles/*/Mail/*/Inbox` | **~470 MB+** | **Почта, не кэш** — удаление = потеря писем |
|
||||
| `~/Library/Thunderbird/Profiles/*/ImapMail/` | — | Локальные копии IMAP |
|
||||
| `~/Library/Thunderbird/Profiles/*/global-messages-db.sqlite` | — | Индекс сообщений |
|
||||
|
||||
**Разрешено (осторожно):** только кэши обновлений Thunderbird в `~/Library/Caches/`, если появятся — **не** трогать `Application Support` и `Profiles`.
|
||||
|
||||
---
|
||||
|
||||
## Браузеры
|
||||
|
||||
| Путь | Причина |
|
||||
|------|---------|
|
||||
| `~/Library/Application Support/BraveSoftware` | Закладки, история, настройки |
|
||||
| `~/Library/Caches/BraveSoftware` | Связан с Brave (не путать с `com.brave.Browser` без проверки) |
|
||||
|
||||
Firefox / Chrome: не удалять `Application Support` целиком; кэши в `~/Library/Caches/` — по [DISK_CLEANUP.md](./DISK_CLEANUP.md).
|
||||
|
||||
---
|
||||
|
||||
## Cursor / VS Code
|
||||
|
||||
| Путь | Причина |
|
||||
|------|---------|
|
||||
| `~/Library/Application Support/Cursor/User/History` | История изменений файлов |
|
||||
| `~/Library/Application Support/Cursor/User/workspaceStorage` | Настройки workspace |
|
||||
| `~/.cursor/extensions` | Расширения (долгая переустановка) |
|
||||
| `~/Library/Application Support/Cursor/logs` | Логи; удаление ухудшает отладку |
|
||||
| `~/Library/Application Support/Cursor/CachedData` | Кэш редактора |
|
||||
| `~/.cursor/ai-tracking` | Трекинг AI |
|
||||
| `~/Library/Application Support/Cursor/User/globalStorage/state.vscdb` | Активная БД состояния (**опционально** чистят вручную при нехватке места — см. DISK_CLEANUP) |
|
||||
|
||||
**Разрешено:** `state.vscdb.backup`, `User/temp/` (устаревшие копии), `WebStorage`, `Partitions`, `~/.cursor/projects`, ShipIt в Caches.
|
||||
|
||||
---
|
||||
|
||||
## Мессенджеры и заметки
|
||||
|
||||
| Путь | Причина |
|
||||
|------|---------|
|
||||
| `~/Library/Application Support/Telegram Desktop` | Данные и кэш Telegram |
|
||||
| `~/Library/Application Support/anytype` (целиком) | Workspace'ы Anytype — см. [ANYTYPE_WORKSPACE_FIX.md](./ANYTYPE_WORKSPACE_FIX.md) |
|
||||
| `~/Library/Application Support/direct-commander` | Настройки файлового менеджера |
|
||||
|
||||
---
|
||||
|
||||
## Разработка — Android / Node
|
||||
|
||||
| Путь | Причина |
|
||||
|------|---------|
|
||||
| `~/Library/Android/sdk` | Android SDK |
|
||||
| `~/.gradle` | Кэш Gradle |
|
||||
| `~/code/hunabapp-dev/frontend/android/app/build` | Артефакты сборки frontend Android |
|
||||
| `~/code/hunabapp-dev/frontend/node_modules` | Зависимости frontend |
|
||||
| `~/Library/pnpm` | Store pnpm (~2 GB, долгая перекачка) |
|
||||
| `~/Library/Caches/pnpm` | Кэш pnpm |
|
||||
|
||||
**Опционально (не в автоочистке):** `~/.android/avd/` — эмуляторы; удалять только если не нужны.
|
||||
|
||||
---
|
||||
|
||||
## Проекты и бэкапы в `~/code`
|
||||
|
||||
| Путь | Причина |
|
||||
|------|---------|
|
||||
| `~/code/bots/backup_*` | Бэкапы ботов |
|
||||
| `~/code/bots/archives_*` | Архивы ботов |
|
||||
| `~/code/methatron/pics/tablecloth/1-7.zip` | Архив проекта |
|
||||
| `~/code/methatron/.system/db.mysql.persicia` | БД MySQL проекта (~1.7 GB) |
|
||||
| `~/code/methatron/.system/db.mysql.*` | Прочие БД methatron |
|
||||
| Архивы в `~/code/legal/` (zip/rar по делам) | Юридические материалы |
|
||||
| `~/code/legal/legal_education/` | Рабочие материалы (в т.ч. видео курсов) |
|
||||
|
||||
**Не удалять автоматически:** `~/code/archive/` — проверять вручную.
|
||||
|
||||
---
|
||||
|
||||
## Медиа (фото / видео)
|
||||
|
||||
| Путь | Причина |
|
||||
|------|---------|
|
||||
| `~/Pictures/` | Фото и альбомы |
|
||||
| `~/Videos/` | Видео |
|
||||
| `~/Movies/` | Фильмы / iMovie |
|
||||
| `~/Music/` | Музыка |
|
||||
| `~/Library/Photos/` | Библиотека Фото (системная) |
|
||||
| `~/Library/ScreenRecordings/` | Записи экрана — только по явному согласию |
|
||||
| Видео в `~/code/legal/`, `~/MEGA/`, `~/gdrive*`, `~/g.drive mikhevel/` | Не считать «кэшем» |
|
||||
|
||||
---
|
||||
|
||||
## Облака и синхронизация
|
||||
|
||||
| Путь | Причина |
|
||||
|------|---------|
|
||||
| `~/MEGA/` | Локальная копия MEGA |
|
||||
| `~/gdrive.hoonabku`, `~/gdrive.sendusletters`, `~/g.drive mikhevel/` | Google Drive / локальные зеркала |
|
||||
| `~/My Drive (*@gmail.com)` | Google Drive File Stream |
|
||||
|
||||
---
|
||||
|
||||
## Игры и Wine
|
||||
|
||||
| Путь | Причина |
|
||||
|------|---------|
|
||||
| `~/Library/Application Support/Steam` | Данные Steam |
|
||||
| `~/Library/Containers/com.isaacmarovitz.Whisky/` | Bottles Whisky (игры, Wine) |
|
||||
| `~/Library/Application Support/com.isaacmarovitz.Whisky` | Данные Whisky |
|
||||
|
||||
---
|
||||
|
||||
## Git-бэкапы hunabapp-dev (Google Drive)
|
||||
|
||||
Каталог: `~/gdrive.hoonabku/h.app_bac/` (~900 MB+).
|
||||
|
||||
**Политика:** при очистке диска **всегда сохранять последний git bundle** и его checksum. При появлении нового бэкапа — **обновить таблицу ниже**; более старые bundle в этом каталоге можно удалять вручную только после проверки, что новый бэкап на месте и в Google Drive.
|
||||
|
||||
| Файл | Размер (ориентир) | Дата | Статус |
|
||||
|------|-------------------|------|--------|
|
||||
| `hunabapp-dev_git_20260524_235507.bundle` | 463 MB | 2026-05-24 | **Последний — не удалять** |
|
||||
| `hunabapp-dev_20260524_235507.sha256` | 208 B | 2026-05-24 | **Пара к bundle — не удалять** |
|
||||
|
||||
Также **не удалять без явного решения:**
|
||||
|
||||
| Файл | Причина |
|
||||
|------|---------|
|
||||
| `~/gdrive.hoonabku/h.app_bac/.env.development` | Секреты окружения |
|
||||
| `~/gdrive.hoonabku/h.app_bac/.env.production` | Секреты окружения |
|
||||
|
||||
**Можно удалить после появления более нового bundle (проверить вручную):**
|
||||
|
||||
| Файл | Размер (ориентир) | Дата |
|
||||
|------|-------------------|------|
|
||||
| `~/gdrive.hoonabku/h.app_bac/.tar.gz` | 449 MB | 2026-03-10 |
|
||||
|
||||
---
|
||||
|
||||
## Git (не удалять, только оптимизировать)
|
||||
|
||||
| Путь | Действие |
|
||||
|------|----------|
|
||||
| `~/code/*/.git/` | `git gc --aggressive` — сжатие, **не** `rm -rf` |
|
||||
| Крупные pack-файлы в `.git/objects/pack/` | Часть истории репозитория |
|
||||
|
||||
---
|
||||
|
||||
## Системное
|
||||
|
||||
| Путь | Причина |
|
||||
|------|---------|
|
||||
| `~/Library/Keychains/` | Пароли |
|
||||
| `~/Library/Application Support/com.apple.sharedfilelist/` | Недавние файлы |
|
||||
| `~/Library/Mobile Documents/` | iCloud Drive |
|
||||
| Снимки Time Machine (локальные) | `tmutil listlocalsnapshots` — не удалять вручную без понимания |
|
||||
|
||||
---
|
||||
|
||||
## Шаблон для скриптов (bash)
|
||||
|
||||
```bash
|
||||
# Пример: пропуск защищённого пути
|
||||
case "$path" in
|
||||
*"/Thunderbird"*|*"/Thunderbird/"*) return 0 ;;
|
||||
*"/BraveSoftware"*) return 0 ;;
|
||||
*"/Cursor/User/History"*) return 0 ;;
|
||||
*"/anytype"*) return 0 ;;
|
||||
*"/gdrive.hoonabku/h.app_bac/"*) return 0 ;;
|
||||
*"/h.app_bac/"*) return 0 ;;
|
||||
esac
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Связанные файлы
|
||||
|
||||
| Файл | Назначение |
|
||||
|------|------------|
|
||||
| [DISK_CLEANUP.md](./DISK_CLEANUP.md) | Что **можно** удалять |
|
||||
| [cleanup-disk-now.sh](./cleanup-disk-now.sh) | Интерактивная очистка |
|
||||
| [scripts/scan-cleanup-items.sh](./scripts/scan-cleanup-items.sh) | Сканирование кандидатов |
|
||||
|
||||
**Последнее обновление:** 2026-05-27 — git-бэкап hunabapp-dev в `h.app_bac/` (последний bundle 2026-05-24).
|
||||
@@ -1,11 +1,11 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Безопасная очистка диска — по списку из docs/disk_cleanup/DISK_CLEANUP.md.
|
||||
# НЕ трогает: Brave, Cursor History/workspaceStorage/extensions, Telegram, pnpm, anytype.
|
||||
# Запрещено удалять: docs/disk_cleanup/DO_NOT_DELETE.md
|
||||
|
||||
set -e
|
||||
|
||||
echo "🧹 Безопасная очистка диска (согласовано с DO_NOT_DELETE)"
|
||||
echo "🧹 Безопасная очистка диска (см. DO_NOT_DELETE.md)"
|
||||
echo "=========================================================="
|
||||
echo ""
|
||||
|
||||
@@ -34,6 +34,7 @@ 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 кэш"
|
||||
cleanup_dir "$HOME/Library/Caches/ms-playwright" "Playwright кэш (браузеры для тестов)"
|
||||
echo ""
|
||||
|
||||
# 2. Windsurf полностью (кэш + данные; приложение — удалить вручную из Программы)
|
||||
@@ -49,7 +50,34 @@ echo ""
|
||||
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 ""
|
||||
|
||||
# 3b. Уровень 1 — лёгкие кэши и временные артефакты (~0.5 GB)
|
||||
echo "=== 3b. Уровень 1 (кэши приложений, Apple, hunabapp temp) ==="
|
||||
cleanup_dir "$HOME/Library/Caches/responsivelyapp-updater" "responsivelyapp-updater кэш"
|
||||
cleanup_dir "$HOME/Library/Application Support/ResponsivelyApp" "ResponsivelyApp кэш"
|
||||
cleanup_dir "$HOME/Library/Caches/GeoServices" "GeoServices кэш"
|
||||
cleanup_dir "$HOME/Library/Caches/com.apple.helpd" "com.apple.helpd кэш"
|
||||
cleanup_dir "$HOME/Library/Caches/com.apple.CloudTelemetry" "com.apple.CloudTelemetry кэш"
|
||||
cleanup_dir "$HOME/Library/Caches/com.apple.ctcategories.service" "com.apple.ctcategories.service кэш"
|
||||
HUNAB_TEMP="$HOME/code/hunabapp-dev/temp"
|
||||
if [ -d "$HUNAB_TEMP" ]; then
|
||||
find "$HUNAB_TEMP" -maxdepth 1 -type f \( -name 'hunab-backend-bundle-*.tar.gz' -o -name 'hunab-backend-logs-*.tar.gz' \) -print0 2>/dev/null | while IFS= read -r -d '' f; do
|
||||
size=$(du -sh "$f" 2>/dev/null | cut -f1)
|
||||
echo "🗑️ Удаление hunabapp temp: $(basename "$f") ($size)..."
|
||||
rm -f "$f" && echo " ✅ удалён" || echo " ⚠️ не удалось"
|
||||
done
|
||||
fi
|
||||
echo " Build/dist в ~/code (кроме frontend/android)..."
|
||||
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 " ✅ Build-артефакты уровня 1 очищены"
|
||||
echo ""
|
||||
|
||||
# 4. Приложения — Notion, zoom, LibreOffice, Movavi, Ledger (Telegram в DO_NOT_DELETE)
|
||||
@@ -83,6 +111,7 @@ echo ""
|
||||
|
||||
# 6. Homebrew, .cache, пустые логи
|
||||
echo "=== 6. Homebrew, .cache, пустые логи ==="
|
||||
cleanup_dir "$HOME/Library/Caches/anytype-updater" "anytype-updater кэш"
|
||||
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
|
||||
@@ -162,6 +191,7 @@ echo "📊 Состояние диска после очистки:"
|
||||
df -h / | tail -1
|
||||
echo ""
|
||||
echo "✅ Очистка завершена. Перезапустите приложения при необходимости."
|
||||
echo " Список: docs/disk_cleanup/DISK_CLEANUP.md"
|
||||
echo " Разрешено: docs/disk_cleanup/DISK_CLEANUP.md"
|
||||
echo " Запрещено: docs/disk_cleanup/DO_NOT_DELETE.md"
|
||||
echo ""
|
||||
|
||||
|
||||
@@ -33,7 +33,14 @@ scan_dir() {
|
||||
if [ "$exclude_protected" = "true" ]; then
|
||||
# Проверяем, не является ли это защищенным элементом
|
||||
case "$path" in
|
||||
*"/Thunderbird"*) return ;;
|
||||
*"/Pictures"*) return ;;
|
||||
*"/Videos"*) return ;;
|
||||
*"/BraveSoftware"*) return ;;
|
||||
*"/Steam"*) return ;;
|
||||
*"/Whisky"*) return ;;
|
||||
*"/gdrive.hoonabku/h.app_bac"*) return ;;
|
||||
*"/h.app_bac/"*) return ;;
|
||||
*"/Cursor/User/History"*) return ;;
|
||||
*"/Cursor/User/workspaceStorage"*) return ;;
|
||||
*"/Cursor/extensions"*) return ;;
|
||||
@@ -120,6 +127,9 @@ scan_dir "$HOME/.yarn" ".yarn кэш" true
|
||||
scan_dir "$HOME/.colima" "Colima кэш" true
|
||||
scan_dir "$HOME/Library/Caches/colima" "Colima кэш (Library)" true
|
||||
|
||||
# Playwright кэш (браузеры для e2e-тестов)
|
||||
scan_dir "$HOME/Library/Caches/ms-playwright" "Playwright кэш" true
|
||||
|
||||
# Codeium/Windsurf кэши
|
||||
scan_dir "$HOME/.codeium/windsurf" "Codeium/Windsurf кэш" true
|
||||
|
||||
@@ -135,7 +145,7 @@ find ~/code -type d -name "node_modules" \
|
||||
-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)
|
||||
size_mb=$(du -sm "$path" 2>/dev/null | cut -f1)
|
||||
if [ -n "$size_mb" ]; then
|
||||
TOTAL_SIZE=$((TOTAL_SIZE + size_mb))
|
||||
((ITEMS_FOUND++))
|
||||
@@ -156,7 +166,7 @@ find ~/code -type d \( -name "build" -o -name "dist" -o -name ".next" -o -name "
|
||||
-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)
|
||||
size_mb=$(du -sm "$path" 2>/dev/null | cut -f1)
|
||||
if [ -n "$size_mb" ]; then
|
||||
TOTAL_SIZE=$((TOTAL_SIZE + size_mb))
|
||||
((ITEMS_FOUND++))
|
||||
@@ -200,6 +210,7 @@ scan_dir "$HOME/Library/Application Support/Syncthing" "Syncthing кэш" true
|
||||
|
||||
# ResponsivelyApp
|
||||
scan_dir "$HOME/Library/Application Support/ResponsivelyApp" "ResponsivelyApp кэш" true
|
||||
scan_dir "$HOME/Library/Caches/responsivelyapp-updater" "responsivelyapp-updater кэш" true
|
||||
|
||||
echo ""
|
||||
echo -e "${CYAN}=== CURSOR КЭШИ (кроме защищенных) ===${NC}"
|
||||
@@ -219,7 +230,7 @@ scan_dir "$HOME/Library/Application Support/Cursor/CachedExtensionVSIXs" "Cursor
|
||||
|
||||
# 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)
|
||||
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))
|
||||
@@ -237,6 +248,9 @@ echo ""
|
||||
# Homebrew кэш
|
||||
scan_dir "$HOME/Library/Caches/Homebrew" "Homebrew кэш" true
|
||||
|
||||
# anytype-updater кэш
|
||||
scan_dir "$HOME/Library/Caches/anytype-updater" "anytype-updater кэш" true
|
||||
|
||||
# GeoServices кэш
|
||||
scan_dir "$HOME/Library/Caches/GeoServices" "GeoServices кэш" true
|
||||
|
||||
@@ -266,8 +280,8 @@ echo ""
|
||||
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
|
||||
empty_logs=$(find ~/Library/Logs -type f -size 0 2>/dev/null | wc -l | tr -d ' ')
|
||||
if [ -n "$empty_logs" ] && [ "$empty_logs" -gt 0 ] 2>/dev/null; then
|
||||
printf " %-60s %8s файлов\n" "Пустые логи" "$empty_logs"
|
||||
fi
|
||||
|
||||
@@ -280,7 +294,7 @@ 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)
|
||||
size_mb=$(du -sm "$path" 2>/dev/null | cut -f1)
|
||||
if [ -n "$size_mb" ]; then
|
||||
TOTAL_SIZE=$((TOTAL_SIZE + size_mb))
|
||||
((ITEMS_FOUND++))
|
||||
@@ -306,7 +320,7 @@ find ~/code -type f \( -name "*.zip" -o -name "*.rar" -o -name "*.tar.gz" -o -na
|
||||
-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)
|
||||
size_mb=$(du -sm "$path" 2>/dev/null | cut -f1)
|
||||
if [ -n "$size_mb" ]; then
|
||||
TOTAL_SIZE=$((TOTAL_SIZE + size_mb))
|
||||
((ITEMS_FOUND++))
|
||||
@@ -335,7 +349,7 @@ echo -e "Найдено элементов для очистки: ${YELLOW}$ITEM
|
||||
echo ""
|
||||
|
||||
if [ "$TOTAL_SIZE" -gt 0 ]; then
|
||||
local total_gb=$(echo "scale=2; $TOTAL_SIZE / 1024" | bc 2>/dev/null || echo "0")
|
||||
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}"
|
||||
@@ -343,7 +357,7 @@ fi
|
||||
|
||||
echo ""
|
||||
echo -e "${YELLOW}⚠️ ВАЖНО:${NC}"
|
||||
echo " - Защищённые элементы (см. DISK_CLEANUP.md) исключены из сканирования"
|
||||
echo " - Защищённые элементы: docs/disk_cleanup/DO_NOT_DELETE.md"
|
||||
echo " - Проверьте список перед удалением"
|
||||
echo " - Некоторые элементы могут быть пересозданы автоматически"
|
||||
echo ""
|
||||
|
||||
128
docs/disk_cleanup/videos/LOSSLESS_VIDEO_COMPRESSION_GUIDE.md
Normal file
128
docs/disk_cleanup/videos/LOSSLESS_VIDEO_COMPRESSION_GUIDE.md
Normal file
@@ -0,0 +1,128 @@
|
||||
# Сжатие видео: lossless и почти lossless
|
||||
|
||||
Гайд для `ffmpeg` с акцентом на две задачи:
|
||||
- **строго без потерь** (математический lossless);
|
||||
- **существенно меньше размер** с визуально очень близким качеством.
|
||||
|
||||
## Ключевое правило
|
||||
|
||||
Нельзя одновременно гарантировать:
|
||||
1) **существенно меньший размер**,
|
||||
2) **строго нулевые потери**.
|
||||
|
||||
Для реально меньших файлов обычно используют режим "почти lossless" (visually lossless).
|
||||
|
||||
## Быстрый выбор режима
|
||||
|
||||
- Нужен архив "бит-в-бит по кадрам" -> `x265 lossless` или `x264 lossless`.
|
||||
- Нужен заметно меньший размер и хорошая совместимость (QuickTime, мессенджеры) -> `x264 CRF 18-20`.
|
||||
|
||||
---
|
||||
|
||||
## 1) Проверка исходника
|
||||
|
||||
```bash
|
||||
ffprobe -v error -show_entries format=filename,format_name,duration,size,bit_rate -of default=nw=1:nk=0 "input.mov"
|
||||
```
|
||||
|
||||
## 2) Строгий lossless (HEVC / x265)
|
||||
|
||||
```bash
|
||||
ffmpeg -i "input.mov" \
|
||||
-map 0 \
|
||||
-c:v libx265 -x265-params lossless=1 \
|
||||
-preset medium \
|
||||
-c:a copy \
|
||||
-movflags +faststart \
|
||||
"output_lossless_x265.mp4"
|
||||
```
|
||||
|
||||
Примечания:
|
||||
- `lossless=1` — математически без потерь;
|
||||
- `-c:a copy` — аудио без перекодирования;
|
||||
- размер может стать больше исходника.
|
||||
|
||||
## 3) Строгий lossless (H.264, совместимее)
|
||||
|
||||
```bash
|
||||
ffmpeg -i "input.mov" \
|
||||
-map 0 \
|
||||
-c:v libx264 -crf 0 -preset medium \
|
||||
-pix_fmt yuv420p \
|
||||
-c:a copy \
|
||||
-movflags +faststart \
|
||||
"output_lossless_x264.mp4"
|
||||
```
|
||||
|
||||
## 4) Практичный режим: существенно меньше, визуально очень близко
|
||||
|
||||
Рекомендуемый профиль для QuickTime:
|
||||
|
||||
```bash
|
||||
ffmpeg -i "input.mov" \
|
||||
-map 0 \
|
||||
-c:v libx264 -preset slow -crf 20 \
|
||||
-profile:v high -pix_fmt yuv420p \
|
||||
-c:a copy \
|
||||
-movflags +faststart \
|
||||
"output_smaller.mp4"
|
||||
```
|
||||
|
||||
Подстройка качества:
|
||||
- `crf 18` — выше качество, больше размер;
|
||||
- `crf 20` — хороший баланс;
|
||||
- `crf 22` — меньше размер, больше риск артефактов.
|
||||
|
||||
## 5) Как проверить, что lossless действительно lossless
|
||||
|
||||
```bash
|
||||
ffmpeg -i "input.mov" -map 0:v:0 -f framemd5 "input.framemd5"
|
||||
ffmpeg -i "output_lossless_x265.mp4" -map 0:v:0 -f framemd5 "output.framemd5"
|
||||
diff "input.framemd5" "output.framemd5"
|
||||
```
|
||||
|
||||
Если `diff` пустой — кадры эквивалентны после декодирования.
|
||||
|
||||
## 6) Batch-команда для папки (`.mov`)
|
||||
|
||||
### 6.1 Строгий lossless
|
||||
|
||||
```bash
|
||||
for f in *.mov; do
|
||||
ffmpeg -i "$f" \
|
||||
-map 0 \
|
||||
-c:v libx265 -x265-params lossless=1 \
|
||||
-preset medium \
|
||||
-c:a copy \
|
||||
-movflags +faststart \
|
||||
"${f%.mov}_lossless.mp4"
|
||||
done
|
||||
```
|
||||
|
||||
### 6.2 Существенно меньше, но визуально близко
|
||||
|
||||
```bash
|
||||
for f in *.mov; do
|
||||
ffmpeg -i "$f" \
|
||||
-map 0 \
|
||||
-c:v libx264 -preset slow -crf 20 \
|
||||
-profile:v high -pix_fmt yuv420p \
|
||||
-c:a copy \
|
||||
-movflags +faststart \
|
||||
"${f%.mov}_smaller.mp4"
|
||||
done
|
||||
```
|
||||
|
||||
## 7) Проблемы с открытием файла
|
||||
|
||||
Если файл не открывается в QuickTime или мессенджере:
|
||||
|
||||
1. Проверь контейнер:
|
||||
```bash
|
||||
ffprobe -v error "video.mp4"
|
||||
```
|
||||
2. Перемести метаданные в начало файла:
|
||||
```bash
|
||||
ffmpeg -i "video.mp4" -c copy -movflags +faststart "video_fixed.mp4"
|
||||
```
|
||||
3. Если кодек не поддерживается, перекодируй в H.264 (`libx264`) с `yuv420p`.
|
||||
Reference in New Issue
Block a user