где лежит каждый проект и каждый файл — без обхода дисков
Вкладка: yt.rya.ae/disks/Синхрон: 07:30 и 19:30 (Дубай)Слой: 14_media/1402_storage_mapОбновлено: 2026-10-11
Коротко. Дважды в сутки синхрон снимает полный листинг всех носителей — SSD мака и Memex, их внутренних дисков,
карт и всех Shared Drive — и склеивает их в один индекс. Где лежит проект или файл — сначала
where.py (ответ за доли секунды), по дискам не искать. Роман смотрит то же на вкладке
«Диски» рядом с Базой знаний. Индекс только читает: ничего не удаляет и не переносит.
🧭0.6 · 1Как устроено
три источника → одна склейка → два выхода
💻 MacBook
Тома по кабелю и рабочие папки внутреннего диска (YT*, _render, Downloads, Desktop, Movies, .cache/ytai, Zoom). Личное не листается.
T9-BlackT9-Black-2карта в слоте
🖥 Memex
Листает сам Memex по ssh (кабель, иначе Tailscale) — не по SMB с мака: так быстрее и Finder не виснет.
T7-BeigeT7-Blue-2T7-BlueCFX-2
☁️ Google Drive
Список дисков вживую. Каналы, склады, клиенты — листинг с MD5 (у Google бесплатный); личные — только объём.
Жёлтые метки — APFS с учётом регистра: ссылка на a.MP4 там не найдёт a.mp4.
Плюс серверы: место на диске 5 VPN Timeweb (их API), Hetzner и Yandex (df по ssh-ключу), хостинг Beget (дневной снимок Winston) — без паролей.
📊0.6 · 2Вкладка «Диски»
порядок — по Роману, 14.10.2026
1
Карты
Свёрнуты строкой-сводкой по группам — скоростные CFexpress · SD и microSD · звук (петлички DJI): сколько, занято из скольких; вставленные сейчас и записи без копии видны и в свёрнутом виде. Кнопка «Show all» раскрывает строки карт (клипы на Drive / только на SSD / нигде, проекты записей, media_prep). Раскрыто или нет — браузер помнит.
2
MacBook и Memex · iPhone
Свободное место внутренних дисков и рабочие папки (YT*, _render, Downloads, .cache/ytai…); айфон — только место.
3
SSD
Где подключён (MacBook или Memex), место, папки до проекта (цвет — канал), «Открыть в Finder» — ссылки ryafinder:// ловит помощник RYA Finder (1402_storage_map/finder_link/).
4
Серверы
Первым — сервер комнат ревью (Hetzner: диск, трафик за месяц из 20 ТиБ, тяжёлые комнаты); дальше место на каждом: VPN Timeweb, Hetzner, MedHow в Yandex Cloud, Beget.
5
Google Drive
Всего по 52 общим дискам; у каждого диска и папки — ↗ открыть в Google Drive; дерево до уровня проекта. Личные — только объём.
6
Free up space · проекты · квартиры
Освободить место — очередь жизненного цикла (раздел 8); проекты по каналам: состояние (In work · Delivered · Closed · On Drive), где лежит, «Drive −N» — что ещё не долито синхроном; квартиры — строкой на квартиру (флешки у роутеров, Спруты, малинка), устройства по клику.
где проект на SSD, внутренних дисках, картах и Drive (★ — главная папка), размеры, исходники и прокси, выбор О/П, готовность к сборке и куда смотрят битые ссылки, ярлыки, что только на SSD и что только на Drive
python3 $W RYA-ZVE1-1680.MP4
все места файла: размер, MD5 с Drive, пометка [прокси]; итог «Drive ✓ · SSD ✓» или «⚠ есть только прокси». Шаблон: 'RYA-ZVE1-16*'
python3 $W --single <папка>
что в папке лежит в одном экземпляре: папка читается вживую, сверка с индексом по имени + размеру; прокси с найденным оригиналом — отдельно
python3 $W --missing YTCH10
чего проекту не хватает на SSD (есть только на Drive) — по папкам, с пометкой «прокси есть»
python3 $W --free
место на всех носителях, когда снят каждый, подключён ли сейчас
⏱0.6 · 4Синхрон
launchd на маке, ~10 минут целиком
1
Мак — ~15 с
Полный обход каждого тома: путь, байты, mtime; ярлыки отдельно; корзина тома одной суммой. Замер 11.10: T9-Black, 260 тыс. файлов — 7 с, поэтому полный проход, а не инкремент: инкремент по mtime папок прятал бы файлы, перезаписанные на месте.
2
Memex — ~2 мин
Тот же листер уходит на Memex по ssh через stdin (копия на Memex не нужна), снимок возвращается tar-ом. Memex не ответил — его носители остаются по последнему снимку с пометкой.
3
Drive — 5–10 мин
rclone lsf --fast-list --hash MD5, 6 дисков параллельно, 3 — если идёт большая заливка. Личные диски — объём раз в сутки (RSCore считается 6–7 минут).
4
Склейка и сайт
~8 с на миллион файлов → storage_map.json, index.sqlite; публикация как у кокпита: свой worktree от origin/main, коммит только web/_data/storage*.json, push в main.
S=~/YTAI/scripts/14_media/1402_storage_map/storage_sync.py
python3 $S --now # всё сейчас (или напишите Claude «обнови карту дисков»)
python3 $S --status # когда что снято, последний прогон, launchd
python3 $S --install # поставить агент ae.rya.storage-map (07:30 и 19:30)
📏0.6 · 5Правила
чтобы индекс не обманул
Копия = имя + точный размер
Имени мало: HEVC-прокси называется как оригинал. У каждого файла признак прокси по пути (01_Source_Proxy, _PROXY_, Proxy/) — where.py пишет «есть только прокси», а не «есть».
Индекс — снимок
Перед удалением «единственного» или «копия есть» — живая проверка: drive_find.py, media_prep.py --audit. Индекс решения не принимает.
Личные диски — только объём
RSCore, Documents, Medhow, Tatiana-Tarasenko и т. п.: имя и размер, без листинга. Новый диск без группы в drives.json тоже считается личным, пока его не отнесут.
Регистр
T7-Beige и T7-Blue-2 — APFS с учётом регистра, T9 — без. where.py ищет без учёта регистра и пишет, у каких ссылок проекта регистр отличается: на T7 они сломаются.
Папка ≠ код
Проект узнаётся по коду в имени папки; исключения берутся из отметок «На монтаж» по имени папки (переживают переезд): YTCG37_Setup_UAE_Company_Remotely — это YTCG49.
Главный .prproj
В корне главной папки, с наибольшим числом медиа-ссылок. «О/П» — доля ссылок на прокси; «пустой .prproj» — фильм собирается кодом.
⚠️0.6 · 6Грабли
нашлись при запуске 11.10.2026
launchd не видит /Volumes
Агент, запущенный прямо как python, получает Operation not permitted на внешних томах (защита macOS). Агент запускает /bin/bash — у него полный доступ к диску, python наследует. Лог агента — на встроенном диске.
Диски Memex на маке — по SMB
С мака они видны теми же путями /Volumes/T7-…, но листать их по сети долго и Finder виснет. Листер мака сетевые тома пропускает — их снимает сам Memex.
Кладбища ярлыков
«Битые ярлыки» проекта считаются только в главной папке: YTCH/_night_ops/…/unused_tx_symlinks видны отдельной строкой в списке мест (YTCH10 — 540 битых там, не в проекте).
Рабочие JSON на карте
CFX-2 в поле служила рабочим диском S3: её JSON и логи живут дальше в новых версиях. Копии карты считаются по клипам и звуку, остальное — отдельной строкой.
web/disks/index.html + данные web/_data/storage.json, storage_names.json (генератор scripts/site/storage_feed.py)
♻️0.6 · 8Жизненный цикл проекта
Роман, 14.10.2026: «ничего не терялось, и ничего не оставалось где-то»
1
В работе — синхрон
«Мне бы синхрон с гугл постоянно делать»: launchd ae.rya.drive-sync 8 раз в сутки досылает дом проекта на SSD в его папку на Drive по тем же путям. На Drive ничего не удаляется, заменённое — в _replaced_<дата>; ≤ 300 ГБ в сутки (750 у Google на всех), днём с потолком скорости, ночью без; папка на Drive должна быть подтверждена (угаданная по коду — «confirm»).
2
Архив — только прошлые версии
«в архив — это внутри проект ненужные версии рендера только»: 02_Edit/_cut/vN, conform_vN, папки Archive, прежние экспорты → <проект на Drive>/Archive/…; две старшие версии остаются, пока фильм в работе.
3
Закончен — закрыть
Кейс (case.py: хронология по хэндоффам, этапы и скрипты, кадры финала) → всё на Drive, «чтобы всегда можно было продолжить» → сверка MD5 → отчёт Роману → после его «ок» SSD, Memex и MacBook — пусто; Trello и ContentList сами уходят в 11Archived.
4
Перед удалением — отписка
«перед удалением отпишись только»: freeup.py … --apply только доливает, сверяет и присылает отчёт «к удалению готово»; удаляет freeup.py delete после «ок» — с повторной проверкой Drive и записью описи в журнал операций.
5
Вопросы под пунктами
«под каждым писать уточняющие вопросы… прям там, чтобы с сессией было подключено»: на /disks/moves/ под каждой карточкой, строкой проекта и страницей — поле «Ask Claude»; ответ появляется под вопросом сам. Отвечает живая сессия Claude, которая слушает (asks.py listen под Monitor), иначе через 20 с — Claude на маке только на чтение (launchd ae.rya.disks-asks); «continue in VS Code ↗» под ответом открывает ответившую сессию. Хранилище — сервис комнат ревью («комната» DISKS/moves). Удаляют по-прежнему только галочки и «Send to Claude».
LC=~/YTAI/scripts/14_media/1404_lifecycle
python3 $LC/lifecycle.py [YTCH14] # состояние, где лежит, отставание от Drive, что освободить
python3 $LC/freeup.py close YTCH14 [--apply --by "Роман: «…»"] # versions · caches · cards тоже
python3 $LC/freeup.py pending [--send] # что сверено и ждёт «ок»
python3 $LC/freeup.py delete YTCH14 --by "Роман: «ок»"
python3 $LC/drive_sync.py [--status] # постоянный синхрон: очередь, бюджет
python3 $LC/asks.py list --open # вопросы Романа на /disks/moves/ · listen · take · answer · context · auto
Кнопки раздела «Free up space» на /disks/ открывают сессию Claude с заданием (/go/claude/?code=…&task=close|versions|caches, копии карт — task=cards).
Уведомления — бот RYA: носитель < 5 % или < 50 ГБ, Memex > 80 %, трафик сервера комнат > 50/80 %, «сдан, но не закрыт» через 7 дней, по понедельникам — дайджест. README — 14_media/1404_lifecycle/README.md.