doc: split per-host READMEs, gitea cross-repo links, consistency pass
- nuc/README.md and ks4/README.md carry the host sections (+ network flows) that lived in the top-level README; links rebased - top README: repo links (doc/scripts on git.lutran.fr), index points at the new per-host pages - cross-repo references now use https://git.lutran.fr/julien/scripts instead of relative ../scripts paths that resolve nowhere - plakar-s3-data.md and plakar-incus-integration.md marked SUPERSEDED / RETIRED with pointers to restic-backup.md; their measurements and rationale kept - install.md, local-backup-cron.md, incus-copy.md: crontab sections updated to the live schedule (01:00 replicas, 05:00 restic, Sun maintenance); retired legs labelled as such - restic-backup.md: status live, cutover recorded, post-GC memory estimate, seed plan dated - seafile-gc.md: online GC noted, stale 'crons commented out' removed - ks2/: what-ks2-does-today rewritten (nothing writes to it any more), legs table and gates reflect restic, decommission steps updated - db-exclude replaces the plakar-era config name (script keeps a fallback) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
80f0219716
commit
a0e3a7dd86
+22
-12
@@ -142,22 +142,32 @@ All in the `default` project, on the `default` profile
|
||||
|
||||
## Backups
|
||||
|
||||
> **Migration in progress** (2026-08-09): the `ks2` destination below is
|
||||
> being replaced by a local `backup` zpool on `sdb5` + off-site pull
|
||||
> from nuc — plan and setup in [incus-copy.md](incus-copy.md). The
|
||||
> cron blocks here describe what runs **today**; update on cutover.
|
||||
|
||||
Two **root** cron jobs (this repo's [`scripts/`](../scripts/) are the
|
||||
copies that run here) — the primary safety net for the non-mirrored
|
||||
`data` pool:
|
||||
Full picture, schedule and restore procedures:
|
||||
**[../backup-strategy.md](../backup-strategy.md)**. Drivers live in the
|
||||
[scripts repo](https://git.lutran.fr/julien/scripts) and are deployed
|
||||
to `/root/scripts`. Current **root** cron jobs — the safety net for the
|
||||
non-mirrored `data` pool:
|
||||
|
||||
```cron
|
||||
0 1 * * * /root/scripts/incus-copy.sh -d ks2 -m push
|
||||
0 4 * * * /root/scripts/incus-backup.sh -d 164.132.173.57 -u rsyncbackup \
|
||||
-i /root/.ssh/id_rsyncbackup -p 2233 \
|
||||
-f /root/scripts/incus-backup.db -s data
|
||||
0 1 * * * /root/scripts/incus-copy.sh -p backup -s backup >> /var/log/incus-copy.log 2>&1
|
||||
0 5 * * * /root/scripts/restic-backup.sh >> /var/log/restic-backup.log 2>&1
|
||||
0 14 * * 0 /root/scripts/restic-maintenance.sh >> /var/log/restic-maintenance.log 2>&1
|
||||
```
|
||||
|
||||
- **01:00 `incus-copy.sh`** → replicas of every instance in project
|
||||
`backup` on the sdb5 pool ([incus-copy.md](incus-copy.md),
|
||||
[local-backup-cron.md](local-backup-cron.md)); the S3 instance leg
|
||||
chains here once seeded.
|
||||
- **05:00 `restic-backup.sh`** → auto-discovered DB dumps + the data
|
||||
trees listed in
|
||||
[`scripts/restic-paths`](https://git.lutran.fr/julien/scripts/src/branch/main/restic-paths),
|
||||
into the `restic-data` bucket ([restic-backup.md](restic-backup.md)).
|
||||
- **Sun 14:00 `restic-maintenance.sh`** → prune + integrity checks.
|
||||
|
||||
Historical (retired 2026-08): the `ks2` push and `incus-backup.sh`
|
||||
rsync leg, and the plakar data leg
|
||||
([plakar-s3-data.md](plakar-s3-data.md)).
|
||||
|
||||
- **01:00 — `incus-copy.sh` → `ks2`**: differential `incus copy … \
|
||||
--refresh --refresh-exclude-older --mode push` of every *running*
|
||||
instance to remote incus host `ks2` (a near-live replica). `ks2` must
|
||||
|
||||
Reference in New Issue
Block a user