rpi: Obsidian-vault через Obsidian Sync, суточный архив в ruzzy/MyVault, скилл obsidian у Astra; алерты backup_vault
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
89c9563453
commit
7ef4d0b3e5
Executable
+21
@@ -0,0 +1,21 @@
|
||||
#!/bin/bash
|
||||
# Суточный ОДНОСТОРОННИЙ архив Obsidian-vault в gitea (ruzzy/MyVault).
|
||||
# Vault синхронизирует Obsidian Sync (obsidian-sync.service, ~astra/vault); git — только история:
|
||||
# commit + push, никогда не pull — в vault отсюда ничего не попадает.
|
||||
# Git-каталог отдельно (~astra/vault.git, core.worktree=~astra/vault), чтобы в vault не было .git.
|
||||
# Скрытые файлы (.obsidian, данные плагинов, .gitignore) Sync на rpi не приносит — их не трогаем,
|
||||
# иначе git записал бы их удаление.
|
||||
set -euo pipefail
|
||||
cd "$HOME"
|
||||
G=(git --git-dir="$HOME/vault.git" --work-tree="$HOME/vault")
|
||||
systemctl is-active -q obsidian-sync || { echo "obsidian-sync не работает — архив устарел бы, пропуск"; exit 1; }
|
||||
"${G[@]}" add -A -- . ":(exclude).*" ":(exclude)**/.*"
|
||||
if "${G[@]}" diff --cached --quiet; then
|
||||
echo "изменений нет"
|
||||
else
|
||||
stat=$("${G[@]}" diff --cached --shortstat)
|
||||
"${G[@]}" commit -q -m "Архив vault $(date +%F)" -m "$stat"
|
||||
echo "коммит: $stat"
|
||||
fi
|
||||
"${G[@]}" push -q origin HEAD:main
|
||||
echo "OK: $("${G[@]}" log -1 --format='%h %s')"
|
||||
@@ -0,0 +1,15 @@
|
||||
[Unit]
|
||||
Description=Obsidian Sync (headless) for vault /home/astra/vault
|
||||
Wants=network-online.target
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
User=astra
|
||||
Environment=HOME=/home/astra
|
||||
WorkingDirectory=/home/astra/vault
|
||||
ExecStart=/usr/bin/ob sync --path /home/astra/vault --continuous
|
||||
Restart=always
|
||||
RestartSec=30
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -0,0 +1,12 @@
|
||||
[Unit]
|
||||
Description=Daily one-way archive of Obsidian vault to gitea (ruzzy/MyVault)
|
||||
Wants=network-online.target
|
||||
After=network-online.target obsidian-sync.service
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
User=astra
|
||||
Environment=HOME=/home/astra
|
||||
ExecStart=/usr/local/bin/vault-archive
|
||||
ExecStopPost=+/usr/local/bin/backup-metrics backup_vault
|
||||
TimeoutStartSec=15min
|
||||
@@ -0,0 +1,10 @@
|
||||
[Unit]
|
||||
Description=Daily Obsidian vault archive
|
||||
|
||||
[Timer]
|
||||
OnCalendar=*-*-* 03:45
|
||||
RandomizedDelaySec=10m
|
||||
Persistent=true
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
Reference in New Issue
Block a user