6.2 KiB
title, tags, updated
| title | tags | updated | |||||
|---|---|---|---|---|---|---|---|
| 🔄 Vault sync — как работает и как запустить |
|
2026-09-15 |
🔄 Vault sync — как работает и как запустить
Операционный документ. Как правка из vault доезжает до телефона и что делать, если не доехала. Инциденты — в этой же папке
family/documents/vault-sync/.
1. Архитектура
Mac ~/obsidian ──git push──▶ bare: /mnt/RED_2TB/storage/git/obsidian-vault.git
(IS the remote, /vault.git внутри контейнера)
│
│ git merge
▼
┌──────────────────────────────────────────────────────────┐
│ контейнер hermes-taiga · /opt/data/sync-vault.sh │
│ ТРИ фазы: │
│ ① taiga → /vault = .../storage/obsidian │
│ ② syncthing → /obsidian-syncthing ← SyncThing → 📱 │
│ ③ syncthing-out → push обратно в bare │
└──────────────────────────────────────────────────────────┘
Спайс: /vault — sparse-checkout (personal/, family/, .obsidian/). Пуш из taiga-фазы — только эти пути.
| Путь | Что это |
|---|---|
~/obsidian (Mac) |
рабочий клон vault (править тут) |
/mnt/RED_2TB/storage/git/obsidian-vault.git |
bare-репозиторий = remote |
/mnt/RED_2TB/storage/obsidian |
/vault — taiga-воркtree (sparse) |
/mnt/RED_2TB/storage/obsidian-syncthing |
раздаётся SyncThing'ом на телефон |
/opt/data/sync-vault.sh (в контейнере) |
сам скрипт синка |
2. 🔴 ГЛАВНОЕ: git push НЕ доводит правку до телефона
Факт, стоивший времени 2026-09-15. Пуш на bare — это только полдела. До телефона доводит cron-скрипт sync-vault.sh внутри контейнера hermes-taiga.
Если после правки телефона не видно — причина почти всегда в этом: синк не прогонялся.
3. Запустить синк вручную
ssh truenas_admin@mallexxx.duckdns.org \
'docker exec hermes-taiga bash /opt/data/sync-vault.sh 2>&1 | tail -20'
Признак успеха — три строки:
[<TS>] [taiga] ... Pushed ✓
[<TS>] [syncthing] Syncthing: synced with bare repo ✓ / Pushed ✓
[<TS>] [syncthing-out] Pushed ✓
Если не видишь — SyncThing раздаст в течение минуты.
4. Cron-задача
| Параметр | Значение |
|---|---|
| Название | sync-vault |
| id | 29851c413903 |
| Расписание | */5 * * * * |
| prompt | bash /opt/data/sync-vault.sh >> /tmp/vault-sync.log 2>&1 |
| Живёт | в контейнере hermes-taiga (не на Mac!) |
| Лог | /tmp/vault-sync.log (в контейнере) |
⚠️ Задача оформлена как prompt (LLM-раунд), поэтому наследует риски провайдера: таймауты блокируют очередь, а ~6 % тиков завершаются
completedбез запуска скрипта. Данные не теряются (git идемпотентен), но каденция ниже номинала. Разбор — 2026-09-14-cron-api-timeout-sync-outage.
Смотреть лог:
ssh truenas_admin@mallexxx.duckdns.org 'docker exec hermes-taiga tail -12 /tmp/vault-sync.log'
5. Проверить, что всё сошлось
Все три репозитория должны быть на одном коммите:
ssh truenas_admin@mallexxx.duckdns.org '
cd /mnt/RED_2TB/storage/obsidian-syncthing && echo -n "syncthing: " && git log --oneline -1
cd /mnt/RED_2TB/storage/obsidian && echo -n "vault: " && git log --oneline -1
cd /mnt/RED_2TB/storage/git/obsidian-vault.git && echo -n "bare: " && git log --oneline -1 main
'
На Mac: cd ~/obsidian && git log --oneline -1
Рабочие деревья должны быть чистыми: git status --porcelain → пусто.
6. Скрипт sync-vault-taiga.sh (локальная копия)
Локальная копия для чтения: ~/.hermes/hermes-whale/sync-vault-taiga.sh (3342 б, 2026-05-29).
Описание из шапки скрипта:
taiga@hermes— пушит Hermes-агентsyncthing@hermes— пушит телефон через SyncThingcore.fileMode false(иначе chmod-варнинги root vs UID 950 на ZFS)
Что делает по шагам:
- taiga: коммит локальных изменений →
git merge main(сюда пушит Eagle) → коммит → push в bare. - syncthing: коммит локальных (от телефона) →
git fetch origin main→merge origin/main→push origin main. - syncthing-out: финальный push.
Конфликты скрипт не разрешает — оставляет маркеры и коммитит (осознанное решение).
Связанные
- family/documents/vault-sync/2026-09-14-cron-api-timeout-sync-outage — разрыв синка из-за таймаутов LLM
- family/documents/vault-sync/2026-09-04-git-identity-loss-silent-commit-failure — потеря git-identity
- family/documents/vault-sync/2026-08-31-syncthing-truenas-incident — инцидент SyncThing
- family/how-to/truenas-infrastructure — инфраструктура TrueNAS