Zum Inhalt springen

Sicherung & Wiederherstellung

RAMP enthält ein dediziertes CLI-Tool (RAMP.Cli) für Sicherung und Notfallwiederherstellung. Die CLI unterstützt vollständige und teilweise Sicherungen in mehreren Formaten, Validierung vor der Wiederherstellung und zwei Wiederherstellungsmodi (Überschreiben und Kopieren). Sie arbeitet direkt gegen die RAMP-Datenbank und erstellt eigenständige Sicherungsdateien.


Das RAMP CLI (ramp-cli) stellt vier Befehle bereit:

BefehlBeschreibung
listEntitätshierarchie anzeigen (Systeme, Phasen, Vorlagen, Versionen, Instanzen)
backupEine vollständige oder teilweise Sicherung erstellen
validateEine Sicherungsdatei vor der Wiederherstellung validieren
restoreDaten aus einer Sicherungsdatei wiederherstellen

Die CLI wird als Teil der RAMP-Lösung (src/RAMP.Cli) erstellt. Sie verbindet sich mit derselben Datenbank wie die RAMP API unter Verwendung der Verbindungszeichenfolge aus appsettings.json.

Terminal-Fenster
# CLI erstellen
cd src/RAMP.Cli
dotnet build
# CLI ausführen
dotnet run -- <command> [options]
# Hilfe anzeigen
dotnet run -- --help

RAMP-Daten folgen einer hierarchischen Struktur. Das Verständnis dieser Hierarchie ist wichtig für teilweise Sicherungen und Wiederherstellungen.

System
└── Phase
└── (Instanzen sind mit Phasen verknüpft)
Vorlage
└── Vorlagenversion
└── Schritte, Variablen
└── Instanz
└── Instanzschritte, Instanzvariablen, Anhänge

Bei der Sicherung oder Wiederherstellung einer bestimmten Entität schließt RAMP automatisch alle untergeordneten Entitäten in der Hierarchie ein. Zum Beispiel umfasst die Sicherung eines Systems seine Phasen, und die Sicherung einer Vorlage umfasst alle ihre Versionen.

Verwenden Sie den Befehl list, um die Entitätshierarchie zu erkunden, bevor Sie Sicherungen erstellen:

Terminal-Fenster
# Gesamte Hierarchie auflisten
ramp-cli list
# Ab einer bestimmten Entität auflisten
ramp-cli list --type system --id <system-guid>
# Alle Knoten erweitern
ramp-cli list --expand

Die Ausgabe zeigt eine Baumansicht mit farbkodierten Entitätstypen und untergeordneten Zählungen.


RAMP unterstützt drei Sicherungsformate:

FormatErweiterungBeschreibungAm besten geeignet für
JSON.jsonVon Menschen lesbare JSON-Datei mit allen Daten inlineKleine Sicherungen, Inspektion, programmatische Verarbeitung
ZIP.zipKomprimiertes Archiv mit JSON-Daten und separat gespeicherten AnhangdateienSicherungen mit großen Anhängen
SQLite.sqlitePortable SQLite-DatenbankdateiGroße Sicherungen, Offline-Abfragen

Eine vollständige Sicherung erfasst alle Daten in der RAMP-Datenbank: Systeme, Phasen, Vorlagen, Versionen, Instanzen, Schritte, Variablen, Anhänge und Benutzer-/Gruppen-/Kategorieverweise.

Terminal-Fenster
ramp-cli backup full --output <path> [--format <format>]
OptionAliasErforderlichStandardBeschreibung
--output-oJaAusgabedateipfad
--format-fNeinJsonSicherungsformat: Json, Zip oder Sqlite

Beispiel:

Terminal-Fenster
# Vollständige Sicherung im JSON-Format
ramp-cli backup full --output /backups/ramp-full-2026-03-09.json
# Vollständige Sicherung im ZIP-Format (empfohlen für große Datenbanken)
ramp-cli backup full --output /backups/ramp-full-2026-03-09.zip --format Zip

Nach Abschluss zeigt die CLI eine Zusammenfassungstabelle mit Entitätszählungen an:

Entity Type Count
──────────────────────
Systems 3
Stages 12
Templates 45
Versions 89
Instances 234
User References 156
Category Refs 18

Eine teilweise Sicherung erfasst eine bestimmte Entität und alle ihre untergeordneten Elemente in der Hierarchie.

Terminal-Fenster
ramp-cli backup object --type <entity-type> --id <guid> --output <path> [--format <format>]
OptionAliasErforderlichStandardBeschreibung
--type-tJaEntitätstyp: system, stage, template, version, instance
--id-iJaEntitäts-GUID
--output-oJaAusgabedateipfad
--format-fNeinJsonSicherungsformat: Json, Zip oder Sqlite

Beispiele:

Terminal-Fenster
# Eine einzelne Instanz sichern
ramp-cli backup object --type instance --id a1b2c3d4-... --output instance-backup.json
# Ein System und alle seine Phasen sichern
ramp-cli backup object --type system --id e5f6a7b8-... --output system-backup.zip --format Zip
# Eine Vorlage mit allen Versionen und Instanzen sichern
ramp-cli backup object --type template --id c9d0e1f2-... --output template-backup.json
StartentitätEnthält
SystemDas System + alle seine Phasen
PhaseDie Phase + Verweis auf ihr übergeordnetes System
VorlageDie Vorlage + alle Versionen + Schritte + Variablen
VersionDie Version + alle Schritte + Variablen + Verweis auf übergeordnete Vorlage
InstanzDie Instanz + alle Instanzschritte + Instanzvariablen + Anhänge + Verweise auf übergeordnete Version und Phase

Jede Sicherung enthält auch Referenzdaten — minimale Informationen (IDs und Namen) für Benutzer, Gruppen und Kategorien, die von den gesicherten Entitäten referenziert werden. Dies ermöglicht es dem Wiederherstellungsprozess, Platzhaltereinträge zu erstellen, wenn die ursprünglichen Benutzer oder Gruppen im Zielsystem nicht vorhanden sind.


Jede Sicherungsdatei enthält ein Manifest mit Metadaten über die Sicherung:

FeldBeschreibung
VersionSicherungsformatversion (derzeit “1.0”)
Erstellt amZeitstempel der Sicherungserstellung
Erstellt vonBenutzer oder System, das die Sicherung initiiert hat
TypFull oder Partial
FormatJson, Zip oder Sqlite
StammobjekttypBei teilweisen Sicherungen: der gesicherte Entitätstyp
Stammobjekt-IDBei teilweisen Sicherungen: die GUID der gesicherten Entität
InhaltZusammenfassung aller in der Sicherung enthaltenen Entitäten

Vor der Wiederherstellung können Sie eine Sicherungsdatei validieren, um potenzielle Probleme zu überprüfen.

Terminal-Fenster
ramp-cli validate --input <path> [--mode <mode>]
OptionAliasErforderlichStandardBeschreibung
--input-iJaPfad zur Sicherungsdatei
--mode-mNeinCopyWiederherstellungsmodus zur Validierung: Overwrite oder Copy

Der Validierungsbefehl führt folgende Prüfungen durch:

  • Dateiintegrität: Sicherungsdatei kann korrekt gelesen und analysiert werden
  • Schema-Validierung: Alle erforderlichen Felder sind vorhanden und korrekt typisiert
  • Referenzintegrität: Referenzierte Entitäten (Benutzer, Systeme, Vorlagen) existieren in der Zieldatenbank (für den Überschreib-Modus)
  • ID-Konflikte: Im Überschreib-Modus wird geprüft, ob vorhandene Entitäten überschrieben werden würden
Backup Information
┌──────────────┬─────────────────────────────┐
│ Property │ Value │
├──────────────┼─────────────────────────────┤
│ Backup Type │ Partial │
│ Created At │ 2026-03-09 14:30:00 │
│ Created By │ admin │
│ Format │ Json │
│ Root Object │ Template │
└──────────────┴─────────────────────────────┘
Validation passed!

Wenn die Validierung fehlschlägt, listet die Ausgabe spezifische Fehler und Warnungen auf, mit einem Vorschlag, den alternativen Wiederherstellungsmodus auszuprobieren.


Der Wiederherstellungsbefehl importiert Daten aus einer Sicherungsdatei in die RAMP-Datenbank.

Terminal-Fenster
ramp-cli restore --input <path> [--mode <mode>] [--dry-run] [--dummy-prefix <prefix>]
OptionAliasErforderlichStandardBeschreibung
--input-iJaPfad zur Sicherungsdatei
--mode-mNeinCopyWiederherstellungsmodus: Overwrite oder Copy
--dry-runNeinfalseNur validieren, keine Änderungen vornehmen
--dummy-prefixNein[RESTORED]Präfix für Dummy-Eltern-Entitätsnamen

RAMP bietet zwei Wiederherstellungsmodi, die bestimmen, wie Entitäts-IDs während des Imports behandelt werden.

Verhalten: Alle Entitäten erhalten neue GUIDs. Ursprüngliche IDs werden verworfen und neu zugeordnet.

Vorteile:

  • Funktioniert immer, unabhängig davon, was in der Zieldatenbank vorhanden ist
  • Kein Risiko, vorhandene Daten zu überschreiben
  • Erstellt Dummy-Eltern-Entitäten, wenn die ursprünglichen Eltern nicht vorhanden sind

Anwendungsfälle:

  • Daten in eine andere Umgebung klonen
  • Daten neben bestehenden Einträgen wiederherstellen
  • Daten zwischen separaten RAMP-Installationen migrieren

Dummy-Eltern: Bei der Wiederherstellung einer teilweisen Sicherung (z. B. einer Instanz) und die übergeordnete Entität (z. B. Vorlagenversion, Phase) existiert nicht in der Zieldatenbank, erstellt RAMP eine Platzhalter-Elternentität mit dem Namenspräfix [RESTORED]. Diese Dummy-Eltern stellen referenzielle Integrität sicher.

Terminal-Fenster
ramp-cli restore --input backup.json --mode Copy
# Benutzerdefiniertes Präfix für Dummy-Eltern
ramp-cli restore --input backup.json --mode Copy --dummy-prefix "[IMPORTED]"

Verwenden Sie --dry-run, um die Wiederherstellung zu validieren, ohne Änderungen vorzunehmen:

Terminal-Fenster
ramp-cli restore --input backup.json --mode Overwrite --dry-run

Der Testlauf führt alle Validierungsprüfungen durch und meldet, was wiederhergestellt werden würde, einschließlich Entitätszählungen und Warnungen, ohne die Datenbank zu ändern.


Nach einer erfolgreichen Wiederherstellung zeigt die CLI Statistiken an:

Restore completed!
Entity Type Count
───────────────────────────
Systems 1
Stages 4
Templates 3
Versions 6
Instances 12
Steps 148
Variables 36
Dummy Parents Created 2
ID mappings created: 210
Old IDs -> New IDs have been remapped

Der Wiederherstellungsprozess kann Warnungen für nicht-kritische Probleme erzeugen:

  • Fehlende Benutzerverweise: Benutzer, die in der Sicherung referenziert werden, existieren nicht in der Zieldatenbank
  • Fehlende Kategorieverweise: In der Sicherung referenzierte Kategorien existieren nicht
  • Dummy-Eltern erstellt: Platzhalter-Entitäten wurden für fehlende übergeordnete Verweise erstellt

Wenn die Wiederherstellung fehlschlägt, zeigt die CLI spezifische Fehlermeldungen an:

  • Fehlende erforderliche Verweise: Im Überschreibmodus existiert eine erforderliche übergeordnete Entität nicht
  • Schema-Diskrepanz: Die Sicherungsformatversion ist mit der aktuellen RAMP-Version inkompatibel
  • Datenbankintegritätsverletzungen: Fremdschlüssel-Einschränkungen würden verletzt werden

Für eine umfassende Notfallwiederherstellung sichern Sie Daten auf System-Ebene. Dadurch wird die gesamte Hierarchie erfasst:

System-Sicherung
├── System-Metadaten
├── Alle Phasen
├── Alle Vorlagen (mit diesem System verknüpft)
│ ├── Alle Versionen
│ │ ├── Schritte
│ │ └── Variablen
│ └── Alle Instanzen
│ ├── Instanzschritte
│ ├── Instanzvariablen
│ └── Anhänge
└── Benutzer- und Kategorieverweise
SicherungstypHäufigkeitAufbewahrungFormat
Vollständige SicherungWöchentlich4 WochenZIP
Sicherung auf SystemebeneTäglich2 WochenZIP
Instanzsicherung (nach Abschluss)Pro InstanzDauerhaftJSON

Stellen Sie Sicherungen regelmäßig in einer Testumgebung wieder her, um zu überprüfen, ob sie vollständig und funktionsfähig sind. Verwenden Sie zuerst --dry-run und führen Sie dann eine vollständige Wiederherstellung in einer Nicht-Produktionsdatenbank durch.

Verwenden Sie beim Sichern von Instanzen mit Nachweisdateien das ZIP-Format. Anhänge werden als separate Dateien im Archiv gespeichert und nicht Base64-kodiert eingebettet, was effizienter ist und direkten Dateizugriff ohne Parsen ermöglicht.

Führen Sie eine Aufzeichnung von:

  • Sicherungszeitplan und Aufbewahrungsrichtlinie
  • Speicherorte für Sicherungsdateien
  • Wiederherstellungsverfahren und Kontaktinformationen
  • Datum des letzten erfolgreichen Wiederherstellungstests

Führen Sie immer validate vor restore in der Produktion aus:

Terminal-Fenster
# Schritt 1: Validieren
ramp-cli validate --input backup.json --mode Copy
# Schritt 2: Testlauf
ramp-cli restore --input backup.json --mode Copy --dry-run
# Schritt 3: Tatsächliche Wiederherstellung (nur nach bestandener Validierung)
ramp-cli restore --input backup.json --mode Copy

Sicherungsdateien enthalten den vollständigen Zustand Ihrer RAMP-Daten, einschließlich Schrittanweisungen, Variablenwerten, Benutzerverweisen und Ausführungsverlauf. Speichern Sie sie an einem sicheren Ort mit angemessenen Zugriffskontrollen und Verschlüsselung.