Files
admin/.tasks/reconcile-local-assets-to-minio.md
vitya 2e5adcf11e deploy(cms-s3): S3 FileStorage provider LIVE on RUVDS — admin↔MinIO split-brain closed
Разбор 500 на /admin/assets/<owner>/delete → корень ACL (app pool RX-only на
App_Data после scp-миграции) → полная развязка хранилища CMS:

- S3 FileStorage провайдер (MoreThenCms.FileStorage.S3) построен (координация с
  интерн-сессией) и раскатан LIVE на прод RUVDS: 6 контентных классов web.config
  → S3/MinIO, кэши остались Local. Смок 7 тенантов 200/301, 0×500, S3-read byte-parity.
  Upload-гоча: UseChunkEncoding=false (MinIO ⊥ AWSSDK aws-chunked).
- Весь локальный контент RUVDS → MinIO (galleries 5.3G, themes 2.7G, maxMind);
  imageCache-блоат (2.1G) выпилен из бакета themes.
- stostayer.old определён как stale-копия (не мигрировать).

Новый concept: snolla-admin-appdata-acl-500-after-scp-migration.
Трекеры: morethencms-s3-filestorage-provider (LIVE), reconcile-local-assets-to-minio (done).
Rollback: web.config.bak-pre-s3-2026-07-03 на хосте.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 13:47:21 +03:00

3.4 KiB
Raw Permalink Blame History

[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 <themeId>/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 <ownerId>/<file>, galleries <siteId>/…, themes <themeId>/{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)