# [reconcile-local-assets-to-minio] — залить всё локальное хранилище RUVDS в MinIO **Status:** 🟢 done 2026-07-03 — залито и сверено. Parity чистая: assets 4750/4750 (0 diff checksum), galleries 9984/9984 (долито 9683), themes 27999/27999, maxMind 2/2. Job `b6qb8e10q` exit 0, DONE 10:31:30Z. **Follow-up — ✅ closed 2026-07-03:** per-theme `/imageCache/*` (легаси resize-кэш) выпилен из бакета `themes` после S3-cutover'а (17135 объектов / 2.1 ГБ → 0). Реальный контент тем цел (10864 / 671 MiB, счётчик 1:1). Бакет `themes` теперь только реальный контент. ## Задача Перетащить всё контентное локальное хранилище `C:\sites\snolla\App_Data` (RUVDS IIS) в MinIO (`minio.kzntsv.site`, books-vds). Для уже мигрированных живых сайтов — только verify (все файлы на месте), не перезаписывать. Готовит estate к плану «все сайты → snolla, админка → локальный IIS + S3-провайдер». ## Разведка (2026-07-03) | класс | диск (файлы/МиБ) | MinIO до | действие | |---|---|---|---| | assets | 4750 / 215.5 | 4750 / 216 | verify (`rclone check --one-way --checksum`) — по кол-ву сходится, ловим drift | | galleries | 9984 / 5522 | 301 (pilorama98) | gap-fill `--ignore-existing` (~9683 файла / 5.4 ГБ) | | themes | 27999 / 2847 | 317 (3 темы из 87) | gap-fill `--ignore-existing` (~2.8 ГБ) | | maxMind | 2 / 34.6 | — | ✅ залито в bucket `maxmind` (по требованию user) verify 0 diff | | uploadCache/contentCache/searchIndexes | кэши/индексы | — | НЕ мигрируем | Конвенция ключей — **verbatim** диск→бакет (bucket = имя класса): assets `/`, galleries `/…`, themes `/{css,images,js}/…`. Проверено на живых объектах. ## Метод rclone на хосте (env-var remote `min:`), режим gap-fill `--ignore-existing` (живые объекты не трогаются). Логи: `C:\Windows\Temp\mig-*.log`, маркер `mig-DONE.txt`. Скрипт: scratchpad `mig-assets-to-minio.ps1` (+ `mig-maxmind.ps1`). ⚠️ Гоча: `Start-Process`-детач на Windows Server Core НЕ переживает закрытие ssh-сессии (процесс убивается с сессией) → запускать attached (ssh держит сессию) либо через Scheduled Task. ## Where I stopped / Next action Ждать завершения bash-job `b6qb8e10q` → прочитать `mig-galleries-check.log` / `mig-themes-check.log` (post-verify one-way parity) + `mig-assets-check.log` (drift). Файлы «есть в обоих, но различаются» (drift после 13.06) — НЕ перезаписаны, вынести списком user'у (по живым сайтам перезапись — его решение). Финальная сверка counts/size диск vs MinIO. Затем close. **Branch:** n/a (admin ops)