Files
obsidian-vault/family/how-to/truenas-rclone-backup.md
T

10 KiB
Raw Blame History

TrueNAS — rclone backup

Контейнер

  • Image: rclone/rclone:latest
  • Имя: rclone
  • Запуск: cron внутри контейнера (crond -f)

Маппинги

Host Контейнер
/mnt/RED_2TB/docker/rclone/config /config/rclone
/mnt/RED_2TB /data

Расписание

0 3 * * 0   # каждое воскресенье в 03:00

Скрипт: /config/rclone/backup.sh

Что бэкапится

Метка Источник (host) Назначение Шифрование
Photos /mnt/RED_2TB/Photos mailru:Photos/Photos нет
old-bu /mnt/RED_2TB/old-bu mailru:Photos/old-bu нет
immich /mnt/RED_2TB/immich-photos-upload mailru:Photos/immich нет
docker /mnt/RED_2TB/docker mailru-crypt: ✅ да
backup /mnt/RED_2TB/backup mailru-crypt: ✅ да
t610 /mnt/RED_2TB/backup/t610 — входит в backup автоматически mailru-crypt: ✅ да

📌 Бэкап конфигов t610 (HA OS) кладётся в /mnt/RED_2TB/backup/t610/ (ZFS-датасет, владелец nas:nas). Так как он лежит внутри /mnt/RED_2TB/backup, он уезжает в Mail.ru автоматически — правок в backup.sh не требуется. Схема целиком — [[family/plans/t610-backup-to-truenas]].

📌 Следствие (2026-09-14): всё, положенное в /mnt/RED_2TB/backup/*, уезжает в Mail.ru автоматически — правка backup.sh не нужна. Именно поэтому бэкап конфигов t610 кладётся в /mnt/RED_2TB/backup/t610/ (датасет nas:nas 770, создан 2026-09-14) — см. family/plans/t610-backup-to-truenas. 📌 Крон запускается внутри контейнера rclone от root, поэтому права nas:nas 770 чтению не мешают.

⚠️ Бэкап Kraken — отдельный rclone-контейнер НА Kraken (НЕ на TrueNAS)

Уточнено 2026-09-20. Kraken бэкапится самостоятельно, не через TrueNAS.

Kraken  /srv/.../docker  ──rclone (вс 03:00)──►  mailru-crypt:kraken/docker   (Mail.ru, шифровано)
TrueNAS /mnt/RED_2TB/{docker,backup}  ──rclone──►  mailru-crypt:              (Mail.ru, шифровано)

Между Kraken и TrueNAS бэкапа НЕТ — каждая машина льёт сама в Mail.ru. Kraken на TrueNAS не бэкапится (ни в backup.sh, ни папкой в /mnt/RED_2TB/).

  • Контейнер: rclone на Kraken (/srv/.../docker/rclone/, образ rclone/rclone:latest, restart: always).
  • Маппинги: …/docker/rclone/config → /config/rclone, …/ (весь диск) → /data.
  • Расписание: 0 3 * * 0 (вс 03:00) через crond -f внутри контейнера, только crontab — пропущенное окно НЕ догоняется.
  • Скрипт /config/rclone/backup.sh: run_sync /data/docker mailru-crypt:kraken/docker.
  • Лог: /config/rclone/backup.log (растёт до 65 МБ+ — исключать из архива при бэкапе на NAS).
  • Remotes: mailru, mailru-crypt (crypt поверх mailru:backup).

❌ Бэкап Kraken фактически НЕПОЛНЫЙ (обнаружено 2026-09-20)

Факт Значение
Последний прогон 13 сентября, 3 ч 30 мин
Передано 3.37 GiB, 40021 файл (99%)
Ошибок 292 — сначала 507 Insufficient Storage, затем 400 Bad Request
Итог Failed to sync with 292 errors

Причина: на Mail.ru кончилось место → WebDAV отдаёт 507 Insufficient Storage, затем 400 Bad Request на любые запросы. Alex подтвердил («в курсе»). rclone sync при ошибках не удаляет файлы в облаке (not deleting files as there were IO errors) — состояние «столько, сколько влезло».

Плюс: прогон 20 сентября не состоялся — контейнер rclone поднялся только в 11:00 (после фикса гонки docker↔mount), а crontab пропущенное окно не догоняет.

📋 План (согласовывается 2026-09-20): бэкап Kraken → TrueNAS рядом с t610

Цель: как t610 — Kraken-архив кладётся в /mnt/RED_2TB/backup/kraken/, оттуда существующим скриптом уезжает в Mail.ru. backup.sh TrueNAS не трогаем.

Развилка (Kraken за NAT — нет белого IP):

  • Вариант A (рекомендован): PUSH с Kraken — Kraken по крону сам льёт архив на mallexxx.duckdns.org:22 (порт OPEN, ping 102 ms, проверено). NAT не мешает.
  • Вариант B: PULL с TrueNAS (как t610) — требует SSH-туннеля к NAT-хосту. Сложно.

Детали для реализации: источник /srv/.../6194539b.../docker (2.2G; jellyfin metadata 1.5G можно исключить; rclone/config/backup.log 65MB — исключить); целевой датасет /mnt/RED_2TB/backup/kraken (nas:nas 770, как backup/t610); крон TrueNAS ~04:00 (после t610 в 03:30); отдельный pull/push-ключ с from= + no-pty; ротация 14. Ожидает решения Alex по варианту A/B и составу архива.

Remotes

  • mailru — WebDAV, Mail.ru Cloud (webdav.cloud.mail.ru), user: mallexxx@mail.ru
  • mailru-crypt — rclone crypt поверх mailru:backup, шифрование имён файлов и директорий (standard)
  • Оба remotes есть и на TrueNAS, и на Kraken (одинаковые имена).

Добавить что-то в бэкап

Шифрованное → положить в /mnt/RED_2TB/backup/ или /mnt/RED_2TB/docker/ — подхватится автоматически.
Нешифрованное → добавить run_sync строку в /mnt/RED_2TB/docker/rclone/config/backup.sh.

Кандидаты на добавление — конфиги сервисов

Источник Куда класть Статус
Конфиги t610 (HA OS): /config/{configuration,automations,scripts,scenes,secrets}.yaml, /config/.storage/, /config/go2rtc.yaml, zigbee2mqtt, blueprints, HA БД (home-assistant_v2.db), опции ВСЕХ аддонов (Supervisor API), /data/options.json, /data/.ssh/authorized_keys, /addons/{mbusd,modbus-bridge,ustreamer}, /addon_configs/{zigbee2mqtt,nodered} /mnt/RED_2TB/backup/t610/ ✅ РАБОТАЕТ, v4 (2026-09-14) — крон TrueNAS id=3, юзер nas, 03:30 ежедневно, ротация 14 архивов. Детали, питфоллы, команды — [[family/plans/t610-backup-to-truenas]]

Как работает (проверено 2026-09-14, v4): крон на TrueNAS от юзера nas → ssh на t610 (ключ /mnt/RED_2TB/backup/t610/.ssh/id_ed25519, ограничен from="192.168.2.197") → на t610 выгружаются опции всех аддонов через Supervisor API (/addons/<slug>/info → .data.options) в /tmp/habackup/, затем tar czf - собирается НА t610 → архив t610-full-<ts>.tar.gz (~6.0 МБ, 162 файла) в /mnt/RED_2TB/backup/t610/ → датасет backup целиком уходит в mailru-crypt: по воскресеньям. Лог: backup.log в той же папке.

📌 Почему опции аддонов критичны: там ha_token (JWT для modbus-bridge), mqtt_password mqtt1z3$, привязки USB by-path (usb-0:3/usb-0:4), Zigbee serial, крипто-секрет Node-RED. Без них восстановление = ручная пересборка всего.

⚠️ Важно про права (обновлено 2026-09-14): запись в /mnt/RED_2TB/backup/ требует root (было root:root 775), но целевой датасет backup/t610 — nas:nas 770, поэтому сам бэкап пишется без root. truenas_admin добавлен в группу nas. Root нужен был только для chown nas:nas /mnt/RED_2TB/backup/t610 (один раз). ⚠️ Пароль 1316261 — НЕ от TrueNAS (он от OpenWrt-роутера), root-операции — через System → Shell.

  • rclone remotes на Mac отсутствуют (rclone listremotes пуст) — конфиг с mailru-crypt живёт только на TrueNAS. Бэкап проектировать на стороне NAS, не Mac.
  • Точки входа: ssh truenas_admin@mallexxx.duckdns.org (внешний), 192.168.2.197 (LAN, только с t610).

TODO — добавить в бэкап

Следующие папки из /mnt/RED_2TB/storage/ не бэкапятся, но должны:

Папка Размер Приоритет
storage/git/ 5.7M 🔴 высокий — bare repo (obsidian-vault.git, hermes-taiga.git)
storage/obsidian/ 1M 🔴 высокий — рабочая копия Тайги
storage/art/ 115M 🟡 средний
storage/Music/ 45G 🟡 средний
storage/nas/ <1M 🟡 средний
storage/shared/ <1M 🟡 средний
storage/Edu/ <1M 🟡 средний

Добавить в /mnt/RED_2TB/docker/rclone/config/backup.sh новые run_sync строки.
Шифровать через mailru-crypt: (как docker и backup).

Файлы конфигурации

  • /mnt/RED_2TB/docker/rclone/config/rclone.conf — remotes (root-only)
  • /mnt/RED_2TB/docker/rclone/config/crontab — расписание
  • /mnt/RED_2TB/docker/rclone/config/backup.sh — скрипт