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.
- Öffnen Sie den Windows Task Scheduler (
taskschd.msc) - Klicken Sie auf Aufgabe erstellen (nicht "Einfache Aufgabe")
- 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:
- Rechtsklick auf den Task → Ausführen
- Prüfen Sie das Backup-Ziel auf neue Dateien
- 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:
- Erstellen Sie einen neuen Task wie in Schritt 2 beschrieben
- Verwenden Sie einen anderen Namen (z.B.
CharlyBackup_Weekly) - Ändern Sie den Trigger auf Wöchentlich und wählen Sie den gewünschten Tag
- 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:
- Neue charly-VM installieren (Neuinstallation oder mit
databaseiso) - 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:
- Verwenden Sie im Task Scheduler ein Dienstkonto mit Netzwerkzugriff
- Geben Sie im Backup-Befehl den vollständigen UNC-Pfad an:
charly-server export normal -ExportPath "\\server\share\backup" -BackupVariant advanced -Silent - 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:
- Backup-Variante wählen (Restic empfohlen)
- Export-Pfad konfigurieren
- Backup-Typ wählen (Vollständig oder nur Datenbank)
- 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):
- charly-Clients beenden
- ncjs-Services stoppen
- Datenbank in ReadOnly-Modus setzen
- Datenbanken exportieren
- Datenbank in ReadWrite-Modus zurücksetzen
- ncjs-Services starten
- 7zip-Archiv erstellen/aktualisieren
- In Restic-Repository sichern
DatabaseIso:
- KIM-IP Anpassung
- Datenbanken exportieren (Services bleiben aktiv)
- ISO-Datei erstellen
Version: 2.9.4 Datum der letzten Aktualisierung: 26.01.2026