[2026-09-20] eagle: family/plans/kraken-backup-to-truenas.md personal/tech/docker-data-root-mount-race.md
This commit is contained in:
1 parent
6cb187cee5
commit
4101de5ebc
2 files changed
+132
-147
No files matched your search
@@ -1,8 +1,8 @@
|
||||
# Kraken → TrueNAS — автобэкап стека
|
||||
|
||||
> **Создано:** 2026-09-20
|
||||
> **Обновлено:** 2026-09-20 (реализация: шаги 1-6 ✅ и проверены живым прогоном; остался только шаг 7 — отключить старый Kraken→Mail.ru, ждёт апрува Alex)
|
||||
> **Статус:** ✅ РАБОТАЕТ. Живой прогон прошёл end-to-end: архив **165 МБ / 36985 файлов** лёг на TrueNAS, владелец `nas:nas`, jellyfin и `backup.log` исключены. Крон `0 4 * * *` установлен. **Остаток: шаг 7.**
|
||||
> **Обновлено:** 2026-09-20 (✅ ВСЕ 7 ШАГОВ ВЫПОЛНЕНЫ И ПРОВЕРЕНЫ)
|
||||
> **Статус:** ✅ **РАБОТАЕТ END-TO-END.** Архив **165 МБ / 36985 файлов** лёг на TrueNAS (`nas:nas`), jellyfin и `backup.log` исключены. Крон `0 4 * * *` установлен. Старый бэкап Kraken→Mail.ru **отключён**.
|
||||
> **Задача:** бэкап стека Kraken складывать на TrueNAS в `/mnt/RED_2TB/backup/kraken/`, откуда он автоматически уезжает в Mail.ru Cloud существующим rclone-скриптом TrueNAS (**скрипт не трогаем**).
|
||||
|
||||
## ✅ СТАТУС РЕАЛИЗАЦИИ (2026-09-20)
|
||||
@@ -15,7 +15,7 @@
|
||||
| 4 | Ротация 14 архивов | ✅ | Реализована: `ls -1t kraken-docker-*.tar.gz \| tail -n +15 \| rm` на стороне TrueNAS. В прогоне отработала (архив один → удалять нечего, шаг прошёл без ошибок). |
|
||||
| 5 | Крон `0 4 * * *` | ✅ | Поставлен: **`/etc/cron.d/kraken-backup`** (root:root 644), строка `0 4 * * * root /home/kraken/kraken-backup-to-truenas.sh`. `cron` активен. Не конфликтует с root-crontab (`sd-backup.sh` 03:00 вс, timemachine). |
|
||||
| 6 | Живой прогон | ✅ | **Проверено end-to-end:** tar 603M → 165 МБ, rsync 52 с, размер совпал (`165704366 == 165704366`), лог `=== KRAKEN BACKUP DONE ===`. На TrueNAS: `/mnt/RED_2TB/backup/kraken/kraken-docker-20260920-115925.tar.gz`, **36985 файлов**, владелец `nas:nas`. |
|
||||
| 7 | Выключить старый Kraken→Mail.ru | ⏸ | **НЕ СДЕЛАНО** — ждёт апрува Alex. Бэкап снят: `/home/kraken/backups/rclone-disable-20260920-120606/` (`crontab.bak`, `backup.sh.bak`). Готовый новый crontab: `/Users/admin/kraken-recovery/rclone-crontab.new` (строка закомментирована). См. раздел «ШАГ 7» ниже. |
|
||||
| 7 | Выключить старый Kraken→Mail.ru | ✅ | **СДЕЛАНО.** Строка `0 3 * * 0` в `/config/rclone/crontab` закомментирована, применено (`crontab /config/rclone/crontab`). Проверено: активных задач в контейнере **нет** (`crontab -l \| grep -v '^#'` пусто), `crond` жив, контейнер `Up`. Бэкап для отката: `/home/kraken/backups/rclone-disable-20260920-120606/`. |
|
||||
|
||||
## ✅ РЕШЕНИЕ БЛОКЕРА ПРАВ: вариант C — весь скрипт под `sudo`
|
||||
|
||||
@@ -117,7 +117,75 @@ Mail.ru Cloud (зашифровано)
|
||||
| 4 | Ротация на стороне Kraken vs TrueNAS | Делать ротацию **на TrueNAS** (там архивы), rm старых |
|
||||
| 5 | `backup.log` 65 МБ растёт | Исключить из tar (`--exclude`) + рассмотреть ротацию самого лога |
|
||||
|
||||
## ⏸ ШАГ 7 — выключить старый бэкап Kraken→Mail.ru (ЖДЁТ АПРУВА)
|
||||
## ✅ ШАГ 7 — ВЫПОЛНЕН (2026-09-20)
|
||||
|
||||
**Сделано:** строка `0 3 * * 0 /config/rclone/backup.sh ...` в `/config/rclone/crontab` контейнера `rclone` **закомментирована** (`#0 3 * * 0 ...`), применено через `crontab /config/rclone/crontab`.
|
||||
|
||||
**Проверено:**
|
||||
- `docker exec rclone crontab -l` → строка с `#`
|
||||
- `crontab -l | grep -v '^#' | grep -v '^
|
||||
|
||||
**Почему обязателен:** контейнер `rclone` на Kraken сейчас льёт `docker` напрямую в `mailru-crypt:kraken/docker` (вс 03:00). После перевода на TrueNAS это надо выключить — иначе двойная нагрузка и тот же 507 (место на Mail.ru переполнено).
|
||||
|
||||
**Что уже сделано:**
|
||||
- Бэкап текущего состояния: `/home/kraken/backups/rclone-disable-20260920-120606/` — `crontab.bak` (69 б), `backup.sh.bak` (293 б).
|
||||
- Готовый новый crontab: `/Users/admin/kraken-recovery/rclone-crontab.new` — строка `0 3 * * 0 ...` закомментирована с пояснением и командой отката.
|
||||
|
||||
**Текущий crontab контейнера `rclone`:**
|
||||
```
|
||||
0 3 * * 0 /config/rclone/backup.sh >> /config/rclone/backup.log 2>&1
|
||||
```
|
||||
|
||||
**Команды (нужен апрув Alex — трогают боевой контейнер):**
|
||||
```bash
|
||||
# вариант 1 (простой): закомментировать + перечитать
|
||||
ssh kraken 'sudo docker exec rclone sh -c "sed -i \"s|^0 3 \* \* 0|#0 3 * * 0|\" /config/rclone/crontab && crontab /config/rclone/crontab"'
|
||||
# вариант 2: docker cp готового файла в контейнер + crontab внутри
|
||||
|
||||
# ОТКАТ: раскомментировать строку и перечитать
|
||||
ssh kraken 'sudo docker exec rclone crontab /config/rclone/crontab'
|
||||
```
|
||||
|
||||
## Шаги реализации (все, кроме 7, выполнены)
|
||||
|
||||
1. Ключ `kraken-backup-push` (ed25519) на Kraken → pub на TrueNAS `authorized_keys` с `from="<IP Kraken>"`, `no-pty`, `no-port-forwarding`.
|
||||
2. Создать датасет `/mnt/RED_2TB/backup/kraken` (Passthrough, NFSv4, `nas:nas 770`).
|
||||
3. Скрипт на Kraken: собрать tar (exclude jellyfin, backup.log) → `rsync -e ssh` на TrueNAS `backup/kraken/`.
|
||||
4. Ротация 14 архивов (на TrueNAS).
|
||||
5. Крон на Kraken: `0 4 * * *`.
|
||||
6. Живой прогон + проверка размера архива (не <4096 байт) + проверка, что уезжает в Mail.ru.
|
||||
7. **Отключить старый бэкап Kraken → Mail.ru напрямую** (crontab в контейнере `rclone`: закомментировать `run_sync /data/docker mailru-crypt:kraken/docker`), иначе дублирование и переполнение Mail.ru.
|
||||
|
||||
> ⚠️ **П.7 обязателен:** сейчас Kraken льёт `docker` прямо в `mailru-crypt:kraken/docker`. После перевода на TrueNAS это надо выключить — иначе двойная нагрузка и тот же 507.
|
||||
|
||||
## Проверка результата
|
||||
|
||||
```bash
|
||||
# 1) архив появился на TrueNAS
|
||||
ssh truenas_admin@mallexxx.duckdns.org 'ls -la /mnt/RED_2TB/backup/kraken/'
|
||||
# 2) лог прогона
|
||||
ssh truenas_admin@mallexxx.duckdns.org 'tail -20 /mnt/RED_2TB/backup/kraken/backup.log'
|
||||
# 3) уезжает в облако (после вс 03:00)
|
||||
ssh truenas_admin@mallexxx.duckdns.org 'docker exec rclone tail -30 /config/rclone/backup.log'
|
||||
```
|
||||
|
||||
## Связанные заметки
|
||||
|
||||
- [[family/plans/t610-backup-to-truenas]] — образец схемы (PULL), питфоллы датасетов/SMB/ключей
|
||||
- [[family/how-to/truenas-rclone-backup]] — rclone-бэкап TrueNAS → Mail.ru (куда попадает `backup/kraken`)
|
||||
- [[family/how-to/kraken-access]] — доступ к Kraken, контейнеры
|
||||
- [[personal/tech/docker-data-root-mount-race]] — гонка docker↔монтирование (причина, почему прогон 20.09 не состоялся)
|
||||
- [[personal/tech/xray-reverse-tunnel-kraken-truenas]] — разбор того же инцидента
|
||||
- [[family/how-to/openmediavault-rpi5]] — Kraken OMV
|
||||
` → **пусто** (активных задач нет)
|
||||
- Контейнер `rclone` — `Up`, `crond -f -l 8` жив
|
||||
- `backup.sh` **не тронут** (только расписание отключено) — при необходимости легко вернуть
|
||||
|
||||
**Откат:** снять `#` + `sudo docker exec rclone crontab /config/rclone/crontab`. Бэкап: `/home/kraken/backups/rclone-disable-20260920-120606/`.
|
||||
|
||||
**Причина:** устранение дублирования и переполнения Mail.ru (507). Теперь Kraken идёт в облако **только** через TrueNAS.
|
||||
|
||||
## ⏸ ШАГ 7 — ИСТОРИЯ (выполнен, оставлено для контекста)
|
||||
|
||||
**Почему обязателен:** контейнер `rclone` на Kraken сейчас льёт `docker` напрямую в `mailru-crypt:kraken/docker` (вс 03:00). После перевода на TrueNAS это надо выключить — иначе двойная нагрузка и тот же 507 (место на Mail.ru переполнено).
|
||||
|
||||
|
||||
Reference in new issue
Block a user