Drei Betriebsskripte fuer Linux, im Auslieferungspaket neben den Programmen. setup.sh richtet eine Anlage vollstaendig ein: PostgreSQL auf Wunsch mit (apt/dnf/yum/zypper/pacman), Dienstkonto, Verschluesselungsschluessel, Schema, erster Administrator, gehaertetes Repository, gehaertete systemd-Einheit. Jeder Schritt vermerkt, was er angelegt hat; bricht der Lauf ab, wird genau das zurueckgebaut und nichts sonst. Eine bestehende Installation wird nicht ueberschrieben — dafuer gibt es update.sh, und der Unterschied ist, dass ein Update vorher sichert. update.sh haelt die Reihenfolge ein, um die es geht: sichern, anhalten, tauschen, migrieren, starten, pruefen. Kommt der Dienst danach nicht hoch, holt es die vorige Fassung zurueck. Ohne pg_dump wird gar nicht erst begonnen — ohne Sicherung gibt es nach einer misslungenen Migration keinen Weg zurueck. Repository und Verschluesselungsschluessel bleiben unberuehrt. uninstall.sh entfernt standardmaessig NUR Dienst und Programme. Datenbank, Repository und Konfiguration bleiben liegen; jede dieser Loeschungen verlangt ein woertlich getipptes Bestaetigungswort an einem Terminal. Ein Deinstallationsskript, das nebenbei die Backups mitnimmt, vernichtet genau das, wofuer jemand jahrelang Speicher bezahlt hat. Gegen Debian 12 im Container gefahren — Installation, Anmeldung, Repository eingetragen, Loeschschutz gemessen (advisory auf overlayfs, richtig), echter Sicherungslauf, Update mit unveraendertem Bestand, beide Abbauarten. Drei Fehler dabei gefunden und behoben, alle derselben Art: - "tr </dev/urandom | head -c 32" und "psql | grep -q": Der frueh geschlossene Pipe schickt dem Schreiber SIGPIPE, und mit "set -o pipefail" bricht das Skript mitten in der Einrichtung ab, ohne erkennbaren Grund. - update.sh las die laufende Fassung mit "grep -o" aus der Antwort von /health/ready. Die enthaelt gar kein Versionsfeld; grep endet mit 1, und das Skript nahm ein GELUNGENES Update wieder zurueck — wegen einer Zeile, die nur der Ausgabe dient. Dazu: SYNCOVA_ADMIN_PASSWORD stand in der Doku und existiert nicht — das Passwort kommt ueber die Standardeingabe. Und "syncova-repo break-lock" fehlte zwar nicht mehr, aber der Test auf die Uebereinstimmung der drei Skripte ist neu: Drei Skripte, die sich ueber den Installationsort uneinig sind, ergeben eine Anlage, die sich nicht mehr entfernen laesst. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
4.6 KiB
Änderungen
V1 — 14. August 2026
Die erste Fassung. Sie sichert Dateisysteme unter Linux und Windows sowie Gäste eines Proxmox-VE-Verbunds, prüft die Wiederherstellbarkeit und weist sie nach.
Was sie kann
Sichern und Wiederherstellen. Inhaltsabhängige Blockfindung, Deduplizierung auch über verschlüsselte Bestände hinweg, zstd, AES-256-GCM, Streaming-Pipeline mit Gegendruck. Zusatzsicherungen tragen ein vollständiges Manifest — ein Restore liest genau eine Datei, es gibt keine Kette aufzulösen. Wiederherstellung mit Vorabprüfung, Prüfpunkt und Fortsetzung nach Abbruch.
Ein Repository, das ohne die Anlage auskommt. Inhaltsadressierte Blöcke, atomares Commit-Protokoll, Katalogaufbau allein aus den Manifesten. Fällt der Control-Server samt Datenbank aus, lässt sich beides aus dem Repository zurückholen.
Vertrauen wird nachgewiesen, nicht behauptet. Fünf Prüfarten bis zum
tatsächlichen Wiederherstellungstest, eine Einstufung, die nur mit
durchgeführtem Test auf recoverable steigt, und eine Bewertung, in die
Unbekanntes niemals als gut eingeht.
Löschschutz mit gemessener Durchsetzungsstufe. Was das Betriebssystem nachweislich verhindert, wird gemeldet — nicht, was die Einstellung verspricht. Dazu Legal Hold, Fristverlängerung ohne Verkürzungsmöglichkeit und Aufbewahrungsregeln.
Oberfläche, Kennzahlen, Meldungen, Berichte, Security Center und eine Ransomware-Heuristik, die meldet und niemals selbst handelt.
Was sie ausdrücklich nicht kann
- Kapazitätsprognose. Die Kennzahl erscheint mit Begründung statt mit einer Null.
- Kopie an einen zweiten Ort (Backup Copy). Nicht umgesetzt; das Security Center führt den Bereich als ungeprüft und rechnet ihn nicht ein.
- Changed Block Tracking bei Proxmox. Proxmox gibt geänderte Blöcke nicht über die REST-API heraus. Eine Zusatzsicherung eines Gasts spart deshalb Platz, aber keine Lesezeit.
- Erweiterte Attribute, POSIX-ACLs und SELinux-Kontexte. Gehen bei einer Sicherung verloren.
- Harte Verknüpfungen werden aufgelöst: Der Inhalt kommt vollständig zurück, die Verknüpfung nicht.
- VMware, Hyper-V, Kubernetes, M365, Object Storage, Synthetic Full. Nicht Teil dieser Fassung.
Was gebaut, aber nicht auf echter Hardware gefahren wurde
Diese Punkte sind vollständig umgesetzt und gegen Nachbauten geprüft. Was fehlt, ist die Ausführung auf der jeweiligen Plattform — und bis dahin gelten sie nicht als freigegeben:
- Der Windows-Dienst. Er übersetzt für Windows und ist
vet-sauber, wurde aber nie geladen. Der Kommandozeilenweg und die gesamte Auftragsausführung sind plattformunabhängig nachgewiesen. - Die systemd-Einheit. Inhaltlich korrigiert, nie auf einem Linux-System geladen.
- Proxmox. Entdecken, Sichern, Prüfen und bitgenaues Zurückschreiben laufen durch — gegen einen Nachbau der API. Ob eine wiederhergestellte Maschine startet, ist ungeprüft.
- Der SSH-Zugriffsweg auf Proxmox-Knoten. Die Fingerabdruckprüfung ist getestet, eine echte Verbindung gab es nie.
Einrichtung, Aktualisierung, Entfernung
Das Linux-Paket bringt drei Skripte mit:
setup.shrichtet eine Anlage vollständig ein — PostgreSQL auf Wunsch mit, Dienstkonto, Schlüssel, Schema, erster Administrator, gehärtetes Repository, systemd-Einheit. Bricht ein Schritt ab, wird zurückgebaut, was dieser Lauf angelegt hat; Vorgefundenes bleibt unangetastet.update.shsichert zuerst Datenbank und Konfiguration, hält den Dienst an, tauscht die Programme, migriert mit der neuen Fassung und startet. Kommt der Dienst danach nicht hoch, holt es die vorige Fassung zurück. Repository und Verschlüsselungsschlüssel werden nie angefasst.uninstall.shentfernt standardmäßig nur Dienst und Programme. Datenbank, Repository und Konfiguration bleiben liegen; jede dieser drei Löschungen verlangt ein wörtlich getipptes Bestätigungswort an einem Terminal.
Eingefrorene Verträge
Ab dieser Fassung sind API (102 Endpunkte), Migrationen, Backup-Format und
Repository-Protokoll festgeschrieben. Jede Abweichung schlägt in einer Prüfung
an; Einzelheiten in docs/release-candidate.md.
Bekannte Grenzen
- Das Manifest liegt vollständig im Speicher — rund 200 Byte je Blockverweis, also etwa 1,5 GiB bei 10 TB Quelldaten.
- Bei vielen kleinen Dateien begrenzt
fsyncden Durchsatz auf rund 100 Dateien je Sekunde. Das ist der Preis des Commit-Protokolls und kein Fehler. - Weitergeleitete IP-Header werden ignoriert; hinter einem Reverse Proxy steht im Auditprotokoll dessen Adresse.