diff --git a/personal/plans/tagwriter-container.md b/personal/plans/tagwriter-container.md index bbcf70ad..fbd393ab 100755 --- a/personal/plans/tagwriter-container.md +++ b/personal/plans/tagwriter-container.md @@ -17,7 +17,7 @@ updated: '2026-09-26' --- # tagwriter — контейнер применения тегов MP3 (TrueNAS) -_Создан: 2026-09-26. **Статус: ✅ контейнер собран, dry-run прошёл (0 MISSING) → ждёт бэкап + apply.**_ +_Создан: 2026-09-26. **Статус: ✅ контейнер собран, dry-run прошёл (0 MISSING), бэкап выполнен (7041 файл, 42 ГБ) → ждёт `--apply`.**_ _Основание: [[personal/plans/music-tags-wave38-fixes]]._ ## Задача @@ -89,9 +89,9 @@ docker run --rm -u 0 -v /mnt/RED_2TB/docker:/docker alpine:latest sh -c \ ## Порядок работ 1. ✅ **Сборка образа** — `docker compose --profile tools build` (выполнено). -2. ⏳ **Бэкап** — `--backup` (7041 файлов → `/music/backup/`; 48 ГБ при 960 ГБ свободных). **Следующий шаг.** +2. ✅ **Бэкап** — `--backup`: **7041 файл, 42 ГБ → `/music/backup/`** (совпало с планом). Выполнено в фоне (~30 мин, ~2 ГБ/мин). 3. ✅ **Dry-run** — `--dry-run`, 0 записей, **MISSING 0** (выполнено, ждёт приёмки Alex). -4. ⏳ **Apply** — `--apply` (только по «go»). +4. ⏳ **Apply** — `--apply` (только по «go»). **Следующий шаг.** 5. ⏳ **Read-back** — `--readback` + глазами в Jellyfin. ## ✅ СОСТОЯНИЕ НА 2026-09-26 (факты) @@ -102,9 +102,12 @@ docker run --rm -u 0 -v /mnt/RED_2TB/docker:/docker alpine:latest sh -c \ | Проект залит (`Dockerfile`, `docker-compose.yml`, `apply_tags.py`, `data/tag-fix-plan.csv`) | ✅ | | Образ `tagwriter:latest` (`docker compose --profile tools build`) | ✅ собран (python:3.12-alpine + mutagen 1.47.0) | | **DRY-RUN** | ✅ **не найдено: 0**, к обработке **7041** (файлов на диске 8483) | -| Бэкап | ⏳ не делался (48 ГБ, свободно 960 ГБ) | +| **БЭКАП** | ✅ **7041 файл, 42 ГБ → `/mnt/RED_2TB/storage/Music/backup/`** (файлов в backup: 7041, MP3: 6823) | | Применение (`--apply`) | ⏳ ждёт «go» | +⚠️ **Замечание по пулу:** после бэкапа `df` показал `RED_2TB` = **935G** (было 976G) — ZFS-снапшоты +съели часть при копировании. Свободно 919 ГБ. Бэкап удалять **только после приёмки в Jellyfin**. + ### 🔴 ПИТФОЛЛ 1: права файлов при COPY в образ Файлы заливались `scp` как `-rw-------` (600) → `COPY` сохранил их root:root 600 @@ -130,11 +133,16 @@ docker run --rm -u 0 -v /mnt/RED_2TB/docker:/docker alpine:latest sh -c \ cd /mnt/RED_2TB/docker/tagwriter docker compose --profile tools build # сборка docker compose --profile tools run --rm tagwriter --dry-run # план, 0 записей -docker compose --profile tools run --rm tagwriter --backup # бэкап 48 ГБ в /music/backup/ -docker compose --profile tools run --rm tagwriter --apply # запись тегов +docker compose --profile tools run --rm tagwriter --backup # бэкап 42 ГБ в /music/backup/ ✅ ВЫПОЛНЕНО +docker compose --profile tools run --rm tagwriter --apply # запись тегов (СЛЕДУЮЩИЙ ШАГ) docker compose --profile tools run --rm tagwriter --readback # проверка ``` +⚠️ **Бэкап — длительная операция (~30 мин, 42 ГБ).** Запускать **в фоне** +(`background=true` + `notify_on_complete`), НЕ в foreground: таймаут 600 с обрывает команду +`[Command timed out]`, а копирование продолжается в контейнере. Проверка прогресса: +`du -sh /mnt/RED_2TB/storage/Music/backup` (растёт ~2 ГБ/мин). + --- ## Питфоллы diff --git a/personal/tech/music-tags-repair-truenas.md b/personal/tech/music-tags-repair-truenas.md index be5ce88c..2b0c7e72 100755 --- a/personal/tech/music-tags-repair-truenas.md +++ b/personal/tech/music-tags-repair-truenas.md @@ -76,7 +76,9 @@ related: > Бэкапы: `bak-wave38-p2p3`, `-p4`, `-nashestvie`, `-chast`, `-chast2`, `-gorigori`. > > ⏭ **Дальше:** применение тегов через контейнер `tagwriter` — [[personal/plans/tagwriter-container]]. -> ✅ Контейнер собран, **dry-run прошёл (MISSING 0, к обработке 7041)**. Осталось: `--backup` → `--apply`. +> ✅ Контейнер собран, **dry-run прошёл (MISSING 0, к обработке 7041)**. +> ✅ **Бэкап выполнен: 7041 файл, 42 ГБ → `/mnt/RED_2TB/storage/Music/backup/`** (файлов в backup 7041, сходится с планом). +> Осталось: `--apply` → `--readback`. > Блокер прав на `/mnt/RED_2TB/docker/` решён: каталог создан **из контейнера** (`docker run -u 0 -v /mnt/RED_2TB/docker:/docker alpine mkdir` + `chown 950:950`). > > ### 🔴 ПИТФОЛЛ: sentinel-группа собирается по КОРНЮ сборника, НЕ по ближайшей папке