[2026-09-22] eagle: personal/plans/kraken-media-inventory-cleanup.md personal/tech/kraken-truenas-media-copies.md personal/tech/skill-lampac-kraken-deploy.md
This commit is contained in:
1 parent
329bd9fc36
commit
66dd5b1f5e
3 files changed
+224
-16
No files matched your search
@@ -6,7 +6,7 @@ related:
|
||||
- '[[personal/plans/lampac-kraken]]'
|
||||
- '[[personal/tech/lampac-deployment]]'
|
||||
- '[[personal/tech/kraken-truenas-media-copies]]'
|
||||
status: transmission-stopped-manifest-ready-awaiting-answers
|
||||
status: deleted-765gb-done-fixing-arr-phantoms
|
||||
tags:
|
||||
- kraken
|
||||
- media
|
||||
@@ -271,6 +271,152 @@ Stranger Things, The Cyberfarm, Rick and Morty). Остальные 9 — **фа
|
||||
240 id в `/tmp/tr-remove-ids.txt`. Механика: контейнер остановлен → правим
|
||||
`/srv/.../docker/transmission/torrents/*.torrent` + `resume/*.resume` + строку в `settings.json`.
|
||||
|
||||
## ✅✅ ВЫПОЛНЕНО 2026-09-22 (ночь) — УДАЛЕНО 693 ГБ, диск 477 ГБ → 1,2 ТБ
|
||||
|
||||
> 🔴 **Раздел ниже («ШЕСТЬ ШАГОВ — ВЫПОЛНЕНО 4 из 6») описывает состояние ДО удаления.**
|
||||
> Фактически выполнены шаги 3, 4, 5, 6a. Актуальный статус — здесь.
|
||||
|
||||
### Итог
|
||||
|
||||
| Метрика | До | После |
|
||||
|---|---|---|
|
||||
| `df` занято | 1,3 ТБ | **511 ГБ** |
|
||||
| `df` свободно | 477 ГБ | **1,2 ТБ** |
|
||||
| Transmission раздач | 249 | **9** |
|
||||
|
||||
**Освобождено 765 ГБ.**
|
||||
|
||||
### Что удалено (41 путь)
|
||||
|
||||
| Путь | ГБ |
|
||||
|---|---|
|
||||
| `media/movies` | 309,69 |
|
||||
| `media/movies-radarr` | 234,59 |
|
||||
| `media/series-sonarr` | 116,14 |
|
||||
| `media/series` | 3,62 |
|
||||
| 37 папок мультфильмов (группы 3+4) | 168,3 |
|
||||
| **ИТОГО** | **~832** |
|
||||
|
||||
Лог удаления: `/tmp/delete-log-20260922-215821.txt` (на Кра́кене).
|
||||
Скрипты: `/tmp/step6_delete.sh` (удаление с логом), `/tmp/step7_sudo.sh` (добивание каталогов).
|
||||
|
||||
### Финальное состояние `media/`
|
||||
|
||||
```
|
||||
.recyclebin cartoons cartoons-series documentaries documentaries-series downloads music
|
||||
```
|
||||
|
||||
Осталось: `documentaries` (71,9 ГБ) · `documentaries-series` (235,6 ГБ) ·
|
||||
`downloads` (78,6 ГБ) · короткометражки `cartoons`/`cartoons-series`.
|
||||
|
||||
### ✅ Шаг 3 — чистка Transmission ВЫПОЛНЕН
|
||||
|
||||
**249 → 9 раздач.** Метод: контейнер **остановлен**, но удаление сделано через RPC
|
||||
(поднял `docker start`, отправил `torrent-remove`, контейнер остаётся работать).
|
||||
|
||||
```bash
|
||||
curl -s -X POST "$TS" -H "X-Transmission-Session-Id: $SID" -H 'Content-Type: application/json' \
|
||||
-d '{"method":"torrent-remove","arguments":{"ids":[<240 id>],"delete-local-data":false}}'
|
||||
```
|
||||
|
||||
🔴 **`"delete-local-data": false`** — снимает раздачу со списка, файлы не трогает.
|
||||
Файлы удалены отдельным шагом (шаг 4).
|
||||
|
||||
🔴 **Питфолл: Transmission ПЕРЕСОЗДАЁТ раздачи с новыми id.** После первого
|
||||
`torrent-remove` на 240 id осталось **17, а не 9** — 8 раздач вернулись с новыми id
|
||||
(223, 233, 234, 236, 238, 241, 244, 247). Долечены вторым проходом **по `downloadDir`**,
|
||||
затем третьим — `Babylon` (`/downloads/radarr`, префикс не попал в фильтр).
|
||||
|
||||
**Вывод:** чистить не по id, а **по `downloadDir`**, и проверять счётчик после каждого прохода
|
||||
до сходимости. Скрипты: `/tmp/step4_tr_remove.sh` (по id), `/tmp/step5_tr_clean2.sh`
|
||||
(по downloadDir), добивание `Babylon` id=236.
|
||||
|
||||
### ✅ Шаг 4 — удаление файлов ВЫПОЛНЕН
|
||||
|
||||
41 путь из `/tmp/delete-manifest.txt`. Скрипт с защитой: **отказ при числе строк ≠ 41**.
|
||||
|
||||
🔴 **Питфолл: каталоги верхнего уровня требуют `sudo`.** Первый прогон удалил всё
|
||||
содержимое, но 4 каталога вернули `Permission denied`:
|
||||
|
||||
```
|
||||
rm: cannot remove '.../media/movies': Permission denied
|
||||
```
|
||||
|
||||
Причина: сами каталоги `root:root`, хотя содержимое `kraken:kraken`.
|
||||
Второй прогон `sudo rmdir` — сработал (каталоги к тому моменту были пусты).
|
||||
|
||||
**Ошибка в скрипте:** не различал «не удалить содержимое» и «не удалить каталог».
|
||||
Проверять оба уровня: содержимое — `rm -rf`, сам каталог — `sudo rmdir`.
|
||||
|
||||
### ✅ Шаг 5 — rescan ВЫПОЛНЕН, но фантомы остались
|
||||
|
||||
```bash
|
||||
curl -sL -X POST -H "X-Api-Key: $RKEY" -H 'Content-Type: application/json' \
|
||||
-d '{"name":"RescanMovie"}' "http://127.0.0.1:7878/radarr/api/v3/command"
|
||||
curl -sL -X POST -H "X-Api-Key: $SKEY" -H 'Content-Type: application/json' \
|
||||
-d '{"name":"RescanSeries"}' "http://127.0.0.1:8989/sonarr/api/v3/command"
|
||||
```
|
||||
|
||||
Rescan **не почистил** — файлы исчезли ДО скана, трекеры приросли к старым записям:
|
||||
|
||||
| Стек | Фантомов |
|
||||
|---|---|
|
||||
| Radarr | **12 фильмов** «с файлами» |
|
||||
| Sonarr | **57 эпизодов** (Our Flag Means Death 18, Stranger Things 25, Cyberfarm 10, Rick and Morty 4) |
|
||||
|
||||
Jellyfin: `/health` → **302** (жив).
|
||||
|
||||
### 🔴 Шаг 5b — фантомы arr: `DELETE` падает с 409 (НЕ ЗАКРЫТО)
|
||||
|
||||
Попытка снять записи через API:
|
||||
|
||||
```bash
|
||||
curl -sL -X DELETE -H "X-Api-Key: $RKEY" "$R/api/v3/moviefile/$FID" # → 409
|
||||
curl -sL -X DELETE -H "X-Api-Key: $SKEY" "$S/api/v3/episodefile/$EID" # → 409
|
||||
```
|
||||
|
||||
Тело ответа:
|
||||
|
||||
```json
|
||||
{"message":"Movie's root folder (/media/movies-radarr) doesn't exist.",
|
||||
"description":"NzbDrone.Core.Exceptions.NzbDroneClientException: ... MediaFileDeletionService.cs:line 59"}
|
||||
```
|
||||
|
||||
```
|
||||
Warn|DiskScanService|Movie's root folder (/media/movies-radarr) doesn't exist.
|
||||
Warn|MediaFileDeletionService|Series' root folder (/media/series-sonarr) doesn't exist.
|
||||
```
|
||||
|
||||
🔴 **Причина: Radarr/Sonarr хранят `rootfolder` в своей БД.** Папку удалили →
|
||||
`MediaFileDeletionService` отказывается работать с файловыми записями.
|
||||
|
||||
⚠️ У **Radarr список rootfolders теперь ПУСТ** (API вернул ничего). У Sonarr остался
|
||||
`/media/series-sonarr` (id=1).
|
||||
|
||||
**Все DELETE вернули 409 — ни одна запись не удалена.**
|
||||
|
||||
### Пути решения (предложены Alex'у, ответа нет)
|
||||
|
||||
1. **Пересоздать пустые root-папки → удалить записи через API → убрать папки.**
|
||||
`mkdir -p /media/{movies-radarr,series-sonarr}` → DELETE работает → `sudo rmdir`.
|
||||
Файлы не возвращаются. **~5 минут.** *(Рекомендовано.)*
|
||||
2. **Оставить фантомы.** На диск и Lampa не влияют, но при следующем скачивании стек
|
||||
скажет «root folder doesn't exist» — надо добавлять новую папку в UI.
|
||||
3. **Вручную через UI** — снести root folder в Settings → Root Folders, пересоздать.
|
||||
|
||||
Готовый скрипт для пути 1: `/tmp/step10_fix.sh` (создаёт папки → DELETE все фантомы →
|
||||
удаляет временные папки). **Не запускался.**
|
||||
|
||||
### Осталось
|
||||
|
||||
- [ ] **Шаг 5b** — снять 12 + 57 фантомных записей (ждёт решения Alex'а по трём путям выше)
|
||||
- [ ] **Шаг 6** — приёмка Alex'ом (`df`, Jellyfin, UI)
|
||||
- [ ] **Шаг 6f** — коммит vault
|
||||
- [ ] Проверить библиотеки Jellyfin (команда ушла в таймаут апрува, не выполнена)
|
||||
- [ ] Уборка: `rm -rf /Users/admin/personal` (артефакт записи по относительному пути)
|
||||
|
||||
## ⏸ Архив: состояние ДО удаления (см. выше актуальное)
|
||||
|
||||
### Шаг 4 — удаление файлов ⏳ МАНИФЕСТ ГОТОВ, ждёт подтверждения
|
||||
|
||||
**41 путь на диске, 693,3 ГБ.** Все пути проверены `-e` → отсутствующих 0.
|
||||
@@ -449,24 +595,27 @@ Lampa **не участвуют**. Поэтому 24 «watchlist»-фильма
|
||||
- [x] **Диагностика Transmission** — 249 раздач, классифицированы
|
||||
- [x] **Шаг 6a — дамп API Radarr/Sonarr** ✅ `/tmp/arr-backup-20260922-215428/`
|
||||
- [x] **Шаг 6b — стоп Transmission** ✅ `Exited (0)`; план чистки: 240 раздач, 1769 ГБ
|
||||
- [ ] Шаг 6b-2 — удалить 240 раздач из Transmission (файлы состояния, контейнер стоит)
|
||||
- [ ] Шаг 6c — удаление файлов: манифест 41 путь / 693,3 ГБ готов, **ждёт ответа на 2 вопроса**
|
||||
- [ ] Шаг 6d — rescan Radarr/Sonarr/Jellyfin
|
||||
- [ ] Шаг 6e — проверка df/docker + приёмка Alex'ом
|
||||
- [ ] Шаг 6f — обновить доки + коммит
|
||||
- [x] **Шаг 6b-2 — удалить раздачи из Transmission** ✅ **249 → 9** (три прохода, см. «Шаг 3»)
|
||||
- [x] **Шаг 6c — удаление файлов** ✅ **693 ГБ**, диск 477 ГБ → 1,2 ТБ свободно
|
||||
- [x] **Шаг 6d — rescan Radarr/Sonarr** ✅ выполнен (фантомы остались — см. 5b)
|
||||
- [ ] **Шаг 6e — снять фантомы arr (409)** ⏳ ждёт выбора Alex'а из 3 путей
|
||||
- [ ] Шаг 6f — приёмка Alex'ом (`df`, Jellyfin, UI)
|
||||
- [ ] Шаг 6g — обновить доки + коммит
|
||||
- [ ] Уборка: `rm -rf /Users/admin/personal` (побочный артефакт, см. ниже)
|
||||
|
||||
## 🎯 ГДЕ МЫ СЕЙЧАС (для следующей сессии)
|
||||
|
||||
**Transmission остановлен. Файлы не удалены. Манифест построен и верифицирован.**
|
||||
**Медиа удалено (693 ГБ). Transmisson чист (9 раздач). Остались фантомы в arr-стеке.**
|
||||
|
||||
Чтобы продолжить:
|
||||
1. Получить от Alex ответ на 2 вопроса выше (7 папок мультфильмов; доксериалы).
|
||||
2. Собрать финальный манифест (`/tmp/step3b.sh`, добавить 7 путей при необходимости).
|
||||
3. Удалить 240 раздач из Transmission (контейнер остановлен → файлы состояния).
|
||||
4. `xargs rm` по манифесту с логом.
|
||||
5. `docker start transmission`, rescan Radarr/Sonarr/Jellyfin.
|
||||
6. `df -h` до/после → приёмка Alex'ом → коммит.
|
||||
1. Получить от Alex выбор из 3 путей решения 409 (см. «Пути решения» выше).
|
||||
Рекомендация — путь 1, скрипт `/tmp/step10_fix.sh` готов.
|
||||
2. Если путь 1: `bash /tmp/step10_fix.sh` → проверить, что `hasFile` = 0 у всех.
|
||||
3. Проверить библиотеки Jellyfin (`:8096`) — смотрит ли он в `media/`.
|
||||
4. Приёмка Alex'ом → коммит vault.
|
||||
|
||||
⚠️ **Манифест уже отработал — повторно не запускать.** `/tmp/delete-manifest.txt`
|
||||
хранится для истории; путь в нём указывает на удалённые объекты.
|
||||
|
||||
⚠️ **`rm -rf` на папки `movies`/`movies-radarr`/`series`/`series-sonarr` целиком** —
|
||||
именно так устроен манифест (41 путь = 4 папки + 37 папок мультфильмов).
|
||||
|
||||
@@ -77,6 +77,27 @@ Alex запросил подтверждение перед удалением:
|
||||
|
||||
**Итог: из ~104 мультфильмов на Кра́кене копия есть у ~40, у ~64 — нет.**
|
||||
|
||||
## ✅ Как это использовалось (2026-09-22, выполнено)
|
||||
|
||||
Результат сверки лёг в основание списка на снос — [[personal/plans/kraken-media-inventory-cleanup]]:
|
||||
|
||||
| Папка Кра́кена | Копии на TrueNAS | Решение |
|
||||
|---|---|---|
|
||||
| `documentaries` (71,9 ГБ) | **нет** | 🔴 **оставлено** — уникально |
|
||||
| `documentaries-series` (235,6 ГБ) | **нет** | 🔴 **оставлено** — уникально |
|
||||
| `cartoons` группы 3 (30,1 ГБ, 14 поз.) | ✅ есть | снесено |
|
||||
| `cartoons` группа 4 (192,6 ГБ, 30 поз.) | ❌ нет | снесено (решение Alex'а — копий не делать) |
|
||||
|
||||
⚠️ **Группа 4 удалена БЕЗ копий** — Alex подтвердил явно. Современная иностранная анимация
|
||||
(`luca`, `encanto`, `elemental`, `super mario`, `turning red`, `corpse bride`, `lightyear`,
|
||||
`inside out`, `миграция`, `кот в сапогах 2011`, `the iron giant`) и советская классика
|
||||
(`маугли 1973`, `снежная королева 1957`, `Тайна третьей планеты`, `Доктор Айболит`,
|
||||
`Врунгель`, `Neznaika.na.lune`, `Bremenskie.muzykanty`) **существуют теперь только на TrueNAS
|
||||
там, где совпало**, и нигде — там, где не совпало.
|
||||
|
||||
**Вывод для будущих проверок:** сверка копий — необходимый шаг, но вердикт по спорным
|
||||
позициям всегда за Alex'ом. Наличие/отсутствие копии — вход, не решение.
|
||||
|
||||
## Метод
|
||||
|
||||
1. Обход TrueNAS: `find /mnt/RED_2TB/storage/{Cartoons,cartoons-series,documentaries,documentaries-series,Movies,series}`
|
||||
|
||||
@@ -108,6 +108,41 @@ related:
|
||||
828 ГБ — 7 папок мультфильмов не сматчились буквально. Всегда `[ -e "$path" ]` каждую
|
||||
строку + печатать `du -sb` построчно.
|
||||
|
||||
## Удаление медиа — ВЫПОЛНЕНО 2026-09-22 (питфоллы исполнения)
|
||||
|
||||
Итог: удалено **693 ГБ**, диск **477 ГБ → 1,2 ТБ**, Transmission **249 → 9 раздач**.
|
||||
Полный журнал: [[personal/plans/kraken-media-inventory-cleanup]], раздел «ВЫПОЛНЕНО».
|
||||
|
||||
29. 🔴 **`torrent-remove` по id НЕ работает — Transmission пересоздаёт раздачи.**
|
||||
Снял 240 id → осталось **17, а не 9**: восемь вернулись с **новыми id**
|
||||
(223, 233, 234, 236, 238, 241, 244, 247). Долечены вторым проходом **по `downloadDir`**,
|
||||
третий проход — `Babylon` (`/downloads/radarr`, префикс не в фильтре).
|
||||
**Правило: чистить по `downloadDir`, не по id, и пересчитывать после каждого прохода.**
|
||||
Все префиксы учесть: `/downloads/complete` И `/downloads/radarr` И `/downloads/complete/radarr`.
|
||||
`"delete-local-data": false` — снимает запись, файлы не трогает (их удаляет манифест).
|
||||
30. 🔴 **`rm -rf` каталога верхнего уровня → `Permission denied` на САМОМ каталоге.**
|
||||
Содержимое удаляется (оно `kraken:kraken`), а каталог `root:root`. Второй проход
|
||||
`sudo rmdir` дочищает (каталоги уже пусты). Скрипт должен уметь оба уровня:
|
||||
содержимое — `rm -rf`, сам каталог — `sudo rmdir`.
|
||||
31. 🔴🔴 **После удаления root-папок arr отдаёт 409 на любой DELETE файловой записи.**
|
||||
```
|
||||
DELETE /radarr/api/v3/moviefile/<id> → 409
|
||||
DELETE /sonarr/api/v3/episodefile/<id> → 409
|
||||
{"message":"Movie's root folder (/media/movies-radarr) doesn't exist."}
|
||||
Warn|MediaFileDeletionService|Movie's root folder (...) doesn't exist.
|
||||
```
|
||||
**Причина: `rootfolder` хранится в БД arr.** Удалил папку — `MediaFileDeletionService`
|
||||
отказывается работать с записями. **Rescan НЕ помогает** (файлы исчезли ДО скана):
|
||||
осталось 12 фильмов и 57 эпизодов фантомами. У Radarr список rootfolders стал ПУСТ.
|
||||
**Лечение:** пересоздать пустые root-папки → DELETE записей → `sudo rmdir`.
|
||||
**Общее правило: дамп API ДО удаления; если сносишь корневую папку библиотеки —
|
||||
планируй чистку записей в том же проходе, потом уже не получится.**
|
||||
32. ⚠️ **rescan командой, а не через UI:**
|
||||
`POST /radarr/api/v3/command {"name":"RescanMovie"}`,
|
||||
`POST /sonarr/api/v3/command {"name":"RescanSeries"}` (с `-L` и `X-Api-Key`).
|
||||
33. ⚠️ **Jellyfin на Кра́кене жив** (`/health` → 302). Порт `:8096`. Проверять библиотеки
|
||||
до/после — единственная реальная связь `media/` с просмотром.
|
||||
|
||||
## Установка Lampa на ТВ (сжато)
|
||||
|
||||
```bash
|
||||
@@ -145,10 +180,13 @@ ssh kraken 'sudo rm -rf /srv/dev-disk-by-uuid-6194539b-03e0-4f33-986b-4da09834e8
|
||||
|
||||
- Лимит кэша TorrServer — дефолт (`UseDisk: false`, 96 МБ RAM). ⚠️ Это и есть причина,
|
||||
что Lampa играет с торрентов, а не с диска — менять только осознанно.
|
||||
- 🔴 **Удаление медиа на Кра́кене — список УТВЕРЖДЁН** (111 позиций, 828,3 ГБ), ждёт
|
||||
ответа по категории C Transmission. Детали: [[personal/plans/kraken-media-inventory-cleanup]].
|
||||
- ✅ **Удаление медиа на Кра́кене ВЫПОЛНЕНО** (2026-09-22): 693 ГБ, диск 477 ГБ → 1,2 ТБ,
|
||||
Transmission 249 → 9 раздач. Детали: [[personal/plans/kraken-media-inventory-cleanup]].
|
||||
- 🔴 **НЕ ЗАКРЫТО: 12 фантомных фильмов в Radarr + 57 эпизодов в Sonarr.** DELETE через API
|
||||
→ **409** (`root folder doesn't exist`). Решение предложено, ответа Alex'а нет.
|
||||
Скрипт `/tmp/step10_fix.sh` готов, не запускался. Питфолл 31 выше.
|
||||
- ⚠️ Проверка библиотек Jellyfin на Кра́кене перед удалением — **не сделана**
|
||||
(команда ушла в таймаут апрува).
|
||||
(команда ушла в таймаут апрува). Jellyfin жив: `/health` → 302.
|
||||
- ⚠️ Уборка: каталог `/Users/admin/personal/` (артефакт записи по относительному пути) —
|
||||
удалить.
|
||||
- Шаг 7 — watchlist в UI Lampa: [[personal/plans/lampac-watchlist-plugin]].
|
||||
|
||||
Reference in new issue
Block a user