homehub: rsync-based home-drive sync via Synology hub

DESIGN.md is the rationale; README.md the operations half.
Four data classes: files (mtime-arbitrated two-way), git repos (manifest +
clone, never byte-synced), the browser link bar (union merge), and everything
else denied by default.
This commit is contained in:
druppy committed 2026-10-24 16:36:40 +02:00
commit 78496330f3
16 files changed
+1576

No files matched your search

+12
View File
@@ -0,0 +1,12 @@
[Unit]
Description=homehub freshness check: alerts only when a live machine has not synced for 24 h
[Service]
Type=oneshot
# HH_QUIET is deliberately NOT set: the ok/stale lines belong in the journal, and
# alert_send() uses DISPLAY+notify-send to reach the desktop when there is one.
ExecStart=%h/homehub/bin/homehub fresh
TimeoutStartSec=5min
[Install]
WantedBy=default.target
+12
View File
@@ -0,0 +1,12 @@
[Unit]
Description=homehub freshness check (half-hourly; the only thing that may complain)
[Timer]
OnBootSec=2min
OnUnitActiveSec=30min
RandomizedDelaySec=2min
AccuracySec=1min
Persistent=true
[Install]
WantedBy=timers.target
+19
View File
@@ -0,0 +1,19 @@
[Unit]
Description=homehub home-drive sync (rsync to NAS hub, mtime-arbitrated)
After=network-online.target
Wants=network-online.target
Conflicts=sleep.target
[Service]
Type=oneshot
# A background home sync must never make the machine stutter.
Nice=19
IOSchedulingClass=idle
# Silent on success is a requirement, not an oversight (DESIGN.md §10).
Environment=HH_QUIET=1
ExecStart=%h/homehub/bin/homehub sync --exec
TimeoutStartSec=3h
# No retry storm: the next timer tick is the retry.
[Install]
WantedBy=default.target
+12
View File
@@ -0,0 +1,12 @@
[Unit]
Description=homehub home-drive sync cycle (every 10 min, catches up after suspend)
[Timer]
OnBootSec=5min
OnUnitActiveSec=10min
RandomizedDelaySec=3min
AccuracySec=1min
Persistent=true
[Install]
WantedBy=timers.target