From 90f6f73dafb11ef42c9c2a765a7cfc7ed355793b Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Tue, 15 Sep 2026 11:37:34 +0600 Subject: [PATCH] [2026-09-15] eagle: family/documents/vault-sync/README.md --- family/documents/vault-sync/README.md | 129 -------------------------- 1 file changed, 129 deletions(-) delete mode 100644 family/documents/vault-sync/README.md diff --git a/family/documents/vault-sync/README.md b/family/documents/vault-sync/README.md deleted file mode 100644 index f6fbc2cf..00000000 --- a/family/documents/vault-sync/README.md +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: "🔄 Vault sync — как работает и как запустить" -tags: [vault-sync, infrastructure, obsidian, syncthing, taiga] -updated: 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. Запустить синк вручную - -```bash -ssh truenas_admin@mallexxx.duckdns.org \ - 'docker exec hermes-taiga bash /opt/data/sync-vault.sh 2>&1 | tail -20' -``` - -**Признак успеха** — три строки: -``` -[] [taiga] ... Pushed ✓ -[] [syncthing] Syncthing: synced with bare repo ✓ / Pushed ✓ -[] [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]]. - -**Смотреть лог:** -```bash -ssh truenas_admin@mallexxx.duckdns.org 'docker exec hermes-taiga tail -12 /tmp/vault-sync.log' -``` - ---- - -## 5. Проверить, что всё сошлось - -Все три репозитория должны быть на **одном коммите**: - -```bash -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` — пушит телефон через SyncThing -- `core.fileMode false` (иначе chmod-варнинги root vs UID 950 на ZFS) - -**Что делает по шагам:** -1. **taiga:** коммит локальных изменений → `git merge main` (сюда пушит Eagle) → коммит → push в bare. -2. **syncthing:** коммит локальных (от телефона) → `git fetch origin main` → `merge origin/main` → `push origin main`. -3. **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