[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 папок мультфильмов).
|
||||
|
||||
Reference in new issue
Block a user