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:
ahauimix
2026-06-01 08:12:19 +03:00
parent a39ef89125
commit 1938b7c743
135 changed files with 9933 additions and 388 deletions

View File

@@ -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 |

View 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).

View File

@@ -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 ""

View File

@@ -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 ""

View 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`.