Zum Inhalt

Export restore

1. Einleitung

Als Unternehmer sind Sie in Deutschland per Gesetz zu einem angemessenen Risikomanagement verpflichtet. Dazu gehört auch eine regelmäßige Datensicherung.

Die regelmäßige Datensicherung bietet folgende Vorteile:

  • Kein bzw. minimaler Datenverlust
  • Geringe Ausfallzeiten
  • Schnell wiederherstellbarer Zustand seit der letzten Datensicherung

Empfehlung: Tägliches Restic-Backup

Wir empfehlen dringend die Verwendung des inkrementellen Restic-Backups (-BackupVariant advanced) als tägliches automatisches Backup. Im Vergleich zum einfachen Backup bietet es:

  • Speichereffizienz: Nur geänderte Datenblöcke werden gespeichert
  • Längere Aufbewahrung: 31 Tage statt 7 Backups
  • Schnellere Backups: Nach dem ersten Vollbackup deutlich kürzer
  • Punktgenaue Wiederherstellung: Jeder der 31 Tage kann wiederhergestellt werden

2. Schnellstart: Restic-Backup einrichten

Schritt 1: Erstes manuelles Backup durchführen

Führen Sie zunächst ein manuelles Backup durch, um die Konfiguration zu testen:

charly-server export normal -ExportPath "\\server\share\backup" -BackupVariant advanced

Prüfen Sie, ob das Backup erfolgreich war und die Daten am Zielort vorhanden sind.

Schritt 2: Windows Task Scheduler konfigurieren

Für automatische tägliche Backups empfehlen wir die manuelle Konfiguration über den Windows Task Scheduler. Dies bietet volle Kontrolle über den ausführenden Benutzer und vermeidet häufige Probleme mit Berechtigungen.

  1. Öffnen Sie den Windows Task Scheduler (taskschd.msc)
  2. Klicken Sie auf Aufgabe erstellen (nicht "Einfache Aufgabe")
  3. Konfigurieren Sie die Aufgabe wie folgt:

Registerkarte "Allgemein":

  • Name: CharlyBackup
  • Beschreibung: Tägliches charly-Server Backup
  • Unabhängig von der Benutzeranmeldung ausführen aktivieren
  • Mit höchsten Privilegien ausführen aktivieren

Registerkarte "Trigger":

  • Neuer Trigger: Täglich
  • Startzeit: z.B. 23:00:00 (außerhalb der Praxiszeiten)

Registerkarte "Aktionen":

  • Neue Aktion: Programm starten
  • Programm/Skript: powershell.exe
  • Argumente hinzufügen:
    -NoProfile -ExecutionPolicy Bypass -Command "charly-server export normal -ExportPath '\\server\share\backup' -BackupVariant advanced -Silent"
    

Registerkarte "Einstellungen":

  • Aufgabe bei Bedarf ausführen aktivieren
  • Aufgabe so schnell wie möglich nach einem verpassten Start ausführen aktivieren
  • Aufgabe beenden, falls sie länger ausgeführt wird als: 4 Stunden

Wichtig: Benutzer für die Ausführung

Wählen Sie einen Benutzer mit:

  • Administratorrechten auf dem lokalen System
  • Schreibrechten auf dem Backup-Ziel (SMB-Share)
  • Einem Passwort, das nicht abläuft (Dienstkonto empfohlen)

Schritt 3: Task testen

Führen Sie den Task manuell aus, um die Konfiguration zu prüfen:

  1. Rechtsklick auf den Task → Ausführen
  2. Prüfen Sie das Backup-Ziel auf neue Dateien
  3. Prüfen Sie den Task-Verlauf auf Fehler

Mehrere Backup-Schedules einrichten

Für erweiterte Backup-Strategien können Sie mehrere Tasks im Windows Task Scheduler erstellen. Beispiele:

Tägliches Backup + Wöchentliches Vollbackup auf separaten Server:

Task Zeitplan Ziel Zweck
CharlyBackup_Daily Täglich 23:00 \\nas\backup Tägliche Sicherung
CharlyBackup_Weekly Sonntags 02:00 \\backup-server\archiv Wöchentliche Sicherung auf separatem Server

Konfiguration des zweiten Tasks:

  1. Erstellen Sie einen neuen Task wie in Schritt 2 beschrieben
  2. Verwenden Sie einen anderen Namen (z.B. CharlyBackup_Weekly)
  3. Ändern Sie den Trigger auf Wöchentlich und wählen Sie den gewünschten Tag
  4. Passen Sie den ExportPath auf das zweite Backup-Ziel an:
    -NoProfile -ExecutionPolicy Bypass -Command "charly-server export normal -ExportPath '\\backup-server\archiv' -BackupVariant advanced -Silent"
    

Tipp: Zeitliche Überschneidungen vermeiden

Planen Sie die Backup-Zeiten so, dass sich die Tasks nicht überschneiden. Ein laufendes Backup blockiert den Start eines zweiten Backups.

3. Best Practices für Backups

Backup-Strategie

Empfehlung Beschreibung
Restic (advanced) verwenden Das inkrementelle Backup-Verfahren ist effizienter und bietet längere Aufbewahrung
Tägliche Backups Mindestens einmal täglich außerhalb der Praxiszeiten
Externes Speicherziel SMB-Share auf separatem Server oder NAS
Regelmäßige Tests Wiederherstellung regelmäßig auf Testsystem prüfen
Backup-Monitoring backup_messages-Ordner regelmäßig auf Fehler prüfen

Backup-Status überwachen (backup_messages)

Nach jedem Backup wird eine Status-Datei im Ordner backup_messages innerhalb des Export-Pfads erstellt. Diese JSON-Dateien ermöglichen die automatische Überwachung des Backup-Status.

Pfad: <ExportPath>/backup_messages/<timestamp>_<status>.json

Beispiel Dateiname: 2026-01-15T02-30-00-000Z_SUCCESSFUL.json

JSON-Struktur:

{
  "timestamp": "2026-01-15T02:30:00.000Z",
  "duration": 1234,
  "status": "SUCCESSFUL",
  "content": {
    "database": true,
    "filesystem": true,
    "config": true
  },
  "export_path": "\\\\server\\share\\backup",
  "remaining_space_on_device": 500000000000,
  "export_type": "backup",
  "export_variant": "ADVANCED",
  "database_backup_size": 1073741824,
  "filesystem_backup_size": 5368709120,
  "config_backup_size": 10485760,
  "details": [],
  "iso_file": {
    "generated": false,
    "path": "",
    "size": 0,
    "remaining_space": 0
  }
}

Wichtige Felder:

Feld Beschreibung
status SUCCESSFUL, FAILED oder PARTIAL
duration Backup-Dauer in Sekunden
content.database Datenbank erfolgreich gesichert
content.filesystem Ablage erfolgreich gesichert
content.config Konfiguration erfolgreich gesichert
export_variant ADVANCED (Restic) oder SIMPLE
remaining_space_on_device Verbleibender Speicherplatz in Bytes
details Array mit Fehlermeldungen bei Problemen

Integration in Monitoring-Systeme:

Die JSON-Dateien können von externen Monitoring-Systemen ausgelesen werden:

# Letzten Backup-Status pruefen
$latestBackup = Get-ChildItem "\\server\share\backup\backup_messages\*.json" |
    Sort-Object LastWriteTime -Descending |
    Select-Object -First 1

$status = Get-Content $latestBackup.FullName | ConvertFrom-Json

if ($status.status -ne "SUCCESSFUL") {
    Write-Warning "Backup fehlgeschlagen: $($status.details)"
}

Version: 2.9.3

Datum der letzten Aktualisierung: 05.02.2026

4. Wiederherstellung

Wiederherstellung aus Restic-Backup

# Wiederherstellung aus Restic-Repository
charly-server export restore -ExportPath "\\server\share\backup"

Der Ablauf:

  • ncjs-Services werden gestoppt
  • Daten werden aus dem Restic-Repository extrahiert
  • Dateien und Datenbanken werden wiederhergestellt
  • ncjs-Services werden neu gestartet

Funktionsprüfung nach Wiederherstellung

Nach einer Wiederherstellung sollten folgende Tests durchgeführt werden:

  • Anmeldung im System
  • Patientendaten abrufen und bearbeiten
  • Terminbuchungen vornehmen
  • Probebackup erstellen

Wiederherstellung auf einem neuen Server

Für einen Serverumzug empfehlen wir die Migration zur charly-VM mit anschließender Wiederherstellung aus dem Restic-Backup:

  1. Neue charly-VM installieren (Neuinstallation oder mit databaseiso)
  2. Restic-Backup wiederherstellen mit charly-server vm restore

Siehe:

5. Alternative Backup-Varianten

5.1 Datenbank-Export für Testmigration (databaseiso)

Für die Vorbereitung einer Testmigration oder zum Erstellen von Testsystemen:

charly-server export databaseiso -ExportPath "\\server\share\test"

Unterschiede zum normalen Backup:

  • Keine Service-Unterbrechung: ncjs-Services bleiben aktiv
  • Nur Datenbanken: Die Ablage wird nicht gesichert
  • Immer mit ISO-Datei: Für einfachen Transfer zu Testsystemen
  • KIM-IP Anpassung: Automatische Anpassung für Portierbarkeit

Kein vollständiges Backup

Dies ist kein vollständiges Backup. Die Ablage (wichtige Dokumente für BEMA-Abrechnung) wird nicht gesichert.

5.2 Nur Datenbank sichern (databaseonly)

Falls Sie die Datenbank an einen anderen Ort sichern möchten oder ein direkt wiederherstellbares Format ohne Restic benötigen:

# Datenbank in separaten Ordner für externe Backup-Software
charly-server export databaseonly -ExportPath "C:\Solutio\DatabaseBackup" -BackupVariant simple

# Alternativ: In die Ablage (analog zu früherem DBBackup)
charly-server export databaseonly -ExportPath "C:\Solutio\Client\Charly\Ablage\DB_Backup" -BackupVariant simple

Anwendungsfälle:

  • Integration mit professionellen Backup-Lösungen
  • Schnelle Sicherung vor Systemänderungen
  • Wenn nur die Datenbank extern gesichert werden soll

5.3 Klassisches Backup (simple)

Das klassische Backup ist aus historischen Gründen weiterhin verfügbar:

charly-server export normal -ExportPath "\\server\share\backup" -BackupVariant simple

Unterschiede zu Restic:

  • 7-Tage-Rotation statt 31 Tage
  • Höherer Speicherplatzbedarf
  • Längere Backup-Zeiten

Bei Verwendung des klassischen Backups werden Datenbank-Backups als TAR.GZ-Archive im postgres-Verzeichnis archiviert und nach 7 Tagen automatisch gelöscht.

5.4 Manuelles Backup mit expliziter Backup-Variante:

Falls manuell eine spezifische Backup-Variante gemacht werden soll, dann kann der Parameter `-BackupVariant` verwendet werden. Damit kann die Backup-Methode direkt angegeben werden:
  - `simple` = 7zip-Backup (klassisch)
  - `advanced` = Restic-Backup (inkrementell, empfohlen)
  - Überschreibt die in `backup-config.json` konfigurierte Einstellung für diesen Export
  ```powershell
  # Restic-Backup ohne vorherige Konfiguration
  charly-server export -ExportPath "\\qnap\backups\solutio" -BackupVariant advanced

  # 7zip-Backup auch wenn Restic konfiguriert ist
  charly-server export -ExportPath "C:\Backups" -BackupVariant simple
  ```

6. Voraussetzungen und Konfiguration

charly-server-Skript installieren

In der Regel ist das Skript bereits installiert. Falls nicht, siehe Installation des charly-Server-Skripts.

Netzwerkspeicher für automatische Backups einrichten

Damit der Windows Task Scheduler das Backup ohne angemeldeten Benutzer ausführen kann, muss der SMB-Share korrekt eingerichtet werden.

Voraussetzungen:

  • Ein Dienstkonto (z.B. DOMAIN\BackupUser) mit Schreibrechten auf dem Share
  • Das Passwort des Dienstkontos sollte nicht ablaufen

SMB-Share dauerhaft für das SYSTEM-Konto verfügbar machen:

Der Windows Task Scheduler läuft typischerweise unter dem SYSTEM-Konto oder einem Dienstkonto. UNC-Pfade (\\server\share) funktionieren direkt, ohne dass ein Laufwerksbuchstabe gemappt werden muss.

Empfohlene Vorgehensweise:

  1. Verwenden Sie im Task Scheduler ein Dienstkonto mit Netzwerkzugriff
  2. Geben Sie im Backup-Befehl den vollständigen UNC-Pfad an:
    charly-server export normal -ExportPath "\\server\share\backup" -BackupVariant advanced -Silent
    
  3. Speichern Sie die Anmeldedaten für den Share im Windows Credential Manager:
    cmdkey /add:server /user:DOMAIN\BackupUser /pass:Passwort
    

Alternative: Persistentes Netzlaufwerk für das Dienstkonto:

Falls ein Laufwerksbuchstabe benötigt wird:

# Als der Benutzer ausführen, unter dem der Task läuft
net use B: "\\server\share\backup" /persistent:yes /user:DOMAIN\BackupUser Passwort

7. Häufige Probleme

Netzwerklaufwerk wird nach Neustart nicht wiederverbunden

Lösung: Verbindung als Systemkonto einrichten:

New-PSDrive -Name "BackupDrive" -PSProvider "FileSystem" -Root "\\server\share" -Persist -Scope Machine

Export läuft langsam

Mögliche Ursachen:

  • Antivirus-Echtzeitscanner blockiert Dateizugriffe → Export-Pfad von Scan ausnehmen
  • Netzwerk-Engpässe → Backup außerhalb der Hauptlast planen

ncjs-Services lassen sich nicht beenden

Lösung:

charly-server manage stop

Falls nicht erfolgreich, aktive Sitzungen identifizieren:

Get-Process | Where-Object {$_.MainWindowTitle -match "charly"}

8. Technische Details (Referenz)

Backup-Status prüfen

Der Backup-Status kann jederzeit überprüft werden:

charly-server export status

Die Ausgabe zeigt:

  • Zeitpunkt und Ergebnis des letzten Backups
  • Konfigurierte geplante Backups
  • Netzwerk-Share-Informationen

Liste aller Restic-Backups

# Letzte 10 Backups anzeigen
charly-server export backup-list

# Mehr Backups anzeigen
charly-server export backup-list -count 20

# Mit Größenangaben (dauert länger)
charly-server export backup-list -count 3 -show_sizes

Restic Browser

Das Restic-Repository kann mit dem kostenlosen Restic Browser durchsucht werden.

Im Export-Verzeichnis befindet sich der Ordner restic_repository. Das Passwort lautet restic_password.

Log-Dateien

Backup-Protokoll (Restic):

Bei Restic-Backups wird ein detailliertes Protokoll erstellt:

[ExportPath]/logs/restic-backup-[timestamp].log

Allgemeine Log-Dateien:

Weitere Log-Dateien befinden sich in %ProgramData%\CharlyServer\logs im Format:

export_[subcommand]_YYYYMMDD_HHMMSS.log

Alternative: backup-config Befehl

Als Alternative zur manuellen Task-Konfiguration steht der interaktive backup-config Befehl zur Verfügung:

charly-server export backup-config

Der Befehl führt Sie durch:

  1. Backup-Variante wählen (Restic empfohlen)
  2. Export-Pfad konfigurieren
  3. Backup-Typ wählen (Vollständig oder nur Datenbank)
  4. Zeitplanung festlegen

Bekannte Einschränkungen

Der backup-config Befehl erstellt automatisch einen Windows Scheduled Task. Dabei kann es zu Berechtigungsproblemen kommen. Empfehlung: Verwenden Sie die manuelle Task Scheduler Konfiguration (Abschnitt 2) für zuverlässigere Ergebnisse.

Vergleich der Export-Typen

Eigenschaft Normal (Restic) DatabaseOnly DatabaseIso
Datenbank
Ablage (charly-Ordner)
ncjs-Services während Export Gestoppt Gestoppt Aktiv
Aufbewahrung 31 Tage 7 Tage Einmalig
Hauptzweck Tägliches Backup Schnelles DB-Backup Test/Training

Export-Prozess im Detail

Standardexport (normal):

  1. charly-Clients beenden
  2. ncjs-Services stoppen
  3. Datenbank in ReadOnly-Modus setzen
  4. Datenbanken exportieren
  5. Datenbank in ReadWrite-Modus zurücksetzen
  6. ncjs-Services starten
  7. 7zip-Archiv erstellen/aktualisieren
  8. In Restic-Repository sichern

DatabaseIso:

  1. KIM-IP Anpassung
  2. Datenbanken exportieren (Services bleiben aktiv)
  3. ISO-Datei erstellen

Version: 2.9.4 Datum der letzten Aktualisierung: 26.01.2026