syncova-backup/migrations/checksums.txt
Jerrit Fritzsche 8e98cc7510
Some checks failed
CI / Backend (Go) (push) Failing after 31s
CI / Frontend (React/TypeScript) (push) Successful in 46s
CI / Sicherheitsprüfungen (push) Successful in 28s
Sicherungsart je Auftrag, Agenten-Token und -Anleitung, update.sh
**Sicherungsart.** Bisher entschied der Executor allein: Liegt ein Elternbackup
vor, wird inkrementell gesichert. Jetzt waehlbar je Auftrag —

- `incremental` (Standard, bisheriges Verhalten),
- `always_full`, oder
- inkrementell **mit einem festen Volltag** ("immer freitags").

Migration 000014 mit drei CHECKs. Der dritte lehnt "immer voll" zusammen mit
einem Wochentag ab: Dann ist ohnehin jeder Lauf voll, und die Regel gehoert in
die Datenbank, weil im Code jede Stelle sie einhalten muesste — eine vergisst
es. Real geprueft: der Widerspruch wird abgewiesen.

Der Wochentag wird in der **Zeitzone des Zeitplans** bestimmt. Rechnete der
Server in UTC, bekaeme ein Betreiber in Berlin seine Vollsicherung am
Donnerstagabend und wunderte sich, warum sie freitags fehlt. Vier Tests, der
entscheidende durch Mutation als fangend bestaetigt.

Zur Einordnung, weil es leicht verwechselt wird: Der Platzbedarf steigt bei
"immer voll" **nicht** nennenswert — unveraenderte Bloecke werden dedupliziert
und liegen weiterhin nur einmal im Repository. Was steigt, ist die Laufzeit.
Steht so in der Maske.

**Aufnahme-Token zeigte "undefined".** Das Feld heisst `token`, nicht
`enrollment_token` — Letzteres ist der Name im *Anfrage*koerper der
Registrierung. Der dritte Formfehler dieser Art; alle konsumierten Endpunkte
sind jetzt gegen den laufenden Dienst abgeglichen.

**Der Aufnahmedialog** hat jetzt eine vollstaendige Anleitung fuer Linux und
Windows mit fertig ausgefuellten Befehlen — Serveradresse und Token eingesetzt,
je Schritt einzeln kopierbar. Eine Anleitung mit Platzhaltern fuehrt
zuverlaessig dazu, dass jemand `<token>` woertlich einsetzt und dann eine
Fehlermeldung sucht, die nichts mit seinem Problem zu tun hat. Dazu die beiden
Stolperstellen: `--state` will eine Datei, und der Agent braucht Schreibzugriff
aufs Repository. Beim Windows-Weg steht dabei, dass der Dienst nie auf echter
Hardware lief.

**update.sh ruestet die Wiederherstellungsflaeche nach** — anlegen und in
ReadWritePaths eintragen. Ein Schritt, den man von Hand ausfuehren muss, wird
uebersehen und faellt erst im Ernstfall auf.

84 Tests im Frontend, alle Go-Tests gruen, shellcheck sauber.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 17:13:22 +02:00

42 lines
3.1 KiB
Plaintext

# Eingefrorene Migrationen (Phase 22)
#
# SHA-256 je Datei. Eine bereits ausgelieferte Migration darf sich **nie wieder
# aendern**: Datenbanken, die sie angewandt haben, fuehren sie nicht erneut aus
# — golang-migrate merkt sich nur die Versionsnummer. Eine nachtraegliche
# Aenderung wirkt deshalb ausschliesslich auf neue Installationen, und das
# Ergebnis sind zwei Schemata mit derselben Versionsnummer.
#
# Wer etwas aendern will, schreibt eine neue Migration. Immer.
#
# Eine neue Migration gehoert hier eingetragen — ohne Eintrag ist sie ab morgen
# ungeschuetzt.
063c5580c95a9d3ed39d948eb20db282ae5962f4fd8f2a7d3b6931fb7db4793a 000010_ransomware_signals.down.sql
0c8614133b8cb96ce6c697a172f7005f36eef9d125d70da2efafb294df1be42b 000004_jobs.up.sql
0ff4909cb82fa15aa8f93fa26968b3f69f250c4a8c65b15f1478989272b7f0fb 000002_identity.down.sql
1191dea2c0c44bca55df61fa70796b83b500bea441ae509536f64b0613517335 000007_immutability.up.sql
3471e0b7d9b6f99535f953618a22bff0ddff09f872c0836c828fa288b3dbf190 000012_proxmox.up.sql
35b8a95ea767940e8c3432db078690c1625818151dd6139ca11f99a0917346e4 000013_repository_registration.up.sql
3b0ac41761dbe05a95f480133947fb3e9dcf9e0dc6be55853512224cf4e26b3b 000004_jobs.down.sql
4837e63360814a0efaaa79ada3010d11e2eee071e7e8f15b0c706ff245470529 000007_immutability.down.sql
5c6764cd534bc9adec748661867f3caff7dd6c5217636156a41f0e258ac28d7a 000013_repository_registration.down.sql
6338d09c9927bff2466ee232b231d8684280a404d52ae3ac14f4f1c28d7a4a44 000011_agent_tasks.up.sql
70cd755a9d2a665b13ce5c2a2c39c172cdf1f5eb6cd5576b7f262ef00e536356 000001_baseline.up.sql
83b96ec0b23f4426bcb07106744eb60388df9bd5c8aa4f51c5a555ec7d9071bc 000010_ransomware_signals.up.sql
8745ef733df98b15fa6448857cd04810143b0297c5e3352070a44800d86d201e 000005_restores.down.sql
9280818b8bff5ba817b8e197ed25fbbd24e7b703546618e9ab7870d7b64b814e 000008_metrics.up.sql
95d9658dff3cc6c39fe69e78b5d9087d1584c873892ad2813fbd79847eefe2cc 000006_verification.down.sql
961b678efd622e0b2a3f648fbe39b82005f3b97cc2c726be5248a06e24584160 000011_agent_tasks.down.sql
a4a4b4dbb9845bf8c65251696b3657fe1274032369bb4388102e2294f4cc9b85 000008_metrics.down.sql
a60bf47af8ddf822dedde8d85e1c9c36e2f877dfc2fc9a7b15c5968aa0676794 000003_agents.down.sql
bde06082ed39775f56ecd329f3a2dd7c24c2da344346160f5888781c9ca76578 000001_baseline.down.sql
c1c1ccf7800ade0bdd559b421019b69e456b0fea24862acf3d9206b6552e0f02 000012_proxmox.down.sql
ce1d702bc5e30cfeefc1a70ace1cec6c133af21592b635113aea3acda8db4a08 000009_alerts.down.sql
d5f1331274b86d0f2eeaef10ceef586b0d076cdfba449b9dcf1cab7d40eef2b9 000006_verification.up.sql
e559f3d4443b9057a3f40a685141d92f3e05817da725857d2f0cba231aef3035 000005_restores.up.sql
e6568d4614f3ebf5a66b75f2b8b3b0ee80786c04c6165216964395c7c1834db8 000009_alerts.up.sql
f38b3d5cd5a1d0143ce633feef4ad75334c702067a1c200f99f4cb791595ca40 000002_identity.up.sql
ffbd9245f8031c902f30a81cbaffcf9e61e515cc77ccaf9e885186e737cca3d0 000003_agents.up.sql
f25274d148996038f5716f315470c4f9371629ad734a03f0ee49ee760ea4c2d5 000014_backup_mode.up.sql
9a48a9de411d6af07461c236967525469c73d820a4d282fab8a61ed6eb56f9f3 000014_backup_mode.down.sql