====== Runbook: Config-Backup ====== **Dauer:** ~5 Minuten \\ **Rolle:** Sysadmin \\ **Häufigkeit:** Nach jeder Änderung, wöchentlich Sicherung der Gateway-Konfiguration und Zertifikate. ---- ===== Workflow ===== flowchart TD A[Start] --> B[Dateien identifizieren] B --> C[Archiv erstellen] C --> D[Auf Backup-Speicher kopieren] D --> E[Integrität prüfen] E --> F{OK?} F -->|Ja| G[Dokumentieren] F -->|Nein| H[Erneut sichern] style G fill:#e8f5e9 style H fill:#ffebee ---- ===== 1. Zu sichernde Dateien ===== | Datei/Ordner | Beschreibung | Kritisch | |--------------|--------------|----------| | ''appsettings.json'' | Hauptkonfiguration | ✓ | | ''appsettings.Production.json'' | Produktions-Override | ✓ | | ''certs/'' | TLS-Zertifikate | ✓ | | ''data/*.db'' | SQLite-Datenbanken | ✓ | | ''.env'' | Umgebungsvariablen (falls vorhanden) | ✓ | ---- ===== 2. Manuelles Backup ===== **Linux:** #!/bin/bash # backup-gateway.sh GATEWAY_DIR="/opt/data-gateway" BACKUP_DIR="/backup/gateway" DATE=$(date +%Y%m%d_%H%M%S) BACKUP_FILE="gateway-config-${DATE}.tar.gz" # Archiv erstellen tar -czvf "${BACKUP_DIR}/${BACKUP_FILE}" \ -C "${GATEWAY_DIR}" \ appsettings.json \ appsettings.Production.json \ certs/ \ data/ # Prüfsumme erstellen sha256sum "${BACKUP_DIR}/${BACKUP_FILE}" > "${BACKUP_DIR}/${BACKUP_FILE}.sha256" # Alte Backups löschen (älter als 30 Tage) find "${BACKUP_DIR}" -name "gateway-config-*.tar.gz" -mtime +30 -delete echo "Backup erstellt: ${BACKUP_FILE}" **Windows (PowerShell):** # backup-gateway.ps1 $GatewayDir = "%GATEWAY_ROOT%" $BackupDir = "D:\Backup\Gateway" $Date = Get-Date -Format "yyyyMMdd_HHmmss" $BackupFile = "gateway-config-$Date.zip" # Archiv erstellen Compress-Archive -Path @( "$GatewayDir\appsettings.json", "$GatewayDir\appsettings.Production.json", "$GatewayDir\certs", "$GatewayDir\data" ) -DestinationPath "$BackupDir\$BackupFile" # Prüfsumme Get-FileHash "$BackupDir\$BackupFile" -Algorithm SHA256 | Select-Object Hash | Out-File "$BackupDir\$BackupFile.sha256" # Alte Backups löschen (älter als 30 Tage) Get-ChildItem "$BackupDir\gateway-config-*.zip" | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } | Remove-Item Write-Host "Backup erstellt: $BackupFile" ---- ===== 3. Automatisiertes Backup ===== **Linux (Cron):** # /etc/cron.d/gateway-backup 0 2 * * * root /opt/scripts/backup-gateway.sh >> /var/log/gateway-backup.log 2>&1 **Windows (Task Scheduler):** # Task erstellen $Action = New-ScheduledTaskAction -Execute "PowerShell.exe" ` -Argument "-File %SCRIPTS_PATH%\backup-gateway.ps1" $Trigger = New-ScheduledTaskTrigger -Daily -At 2:00AM $Principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -RunLevel Highest Register-ScheduledTask -TaskName "Gateway Backup" ` -Action $Action -Trigger $Trigger -Principal $Principal ---- ===== 4. Backup auf Remote-Speicher ===== **Rsync (Linux → NAS):** rsync -avz --delete \ /backup/gateway/ \ user@nas.example.com:/volume1/backups/gateway/ **AWS S3:** aws s3 cp /backup/gateway/gateway-config-*.tar.gz \ s3://my-backups/gateway/ \ --storage-class STANDARD_IA **Azure Blob:** az storage blob upload \ --account-name mybackups \ --container-name gateway \ --file /backup/gateway/gateway-config-*.tar.gz \ --name gateway-config-$(date +%Y%m%d).tar.gz ---- ===== 5. Restore (Wiederherstellung) ===== # Linux cd /opt/data-gateway tar -xzvf /backup/gateway/gateway-config-20241215.tar.gz # Berechtigungen wiederherstellen chown -R datagateway:datagateway /opt/data-gateway chmod 600 /opt/data-gateway/certs/* # Gateway neustarten sudo systemctl restart data-gateway # Windows Expand-Archive -Path "D:\Backup\Gateway\gateway-config-20241215.zip" ` -DestinationPath "%GATEWAY_ROOT%" -Force Restart-Service -Name "DataGateway" ---- ===== 6. Checkliste ===== | # | Prüfpunkt | ✓ | |---|-----------|---| | 1 | appsettings.json gesichert | ☐ | | 2 | Zertifikate gesichert | ☐ | | 3 | SQLite-DBs gesichert | ☐ | | 4 | Prüfsumme erstellt | ☐ | | 5 | Auf Remote-Speicher kopiert | ☐ | | 6 | Restore getestet | ☐ | ---- ===== Troubleshooting ===== | Problem | Ursache | Lösung | |---------|---------|--------| | ''Permission denied'' | Fehlende Rechte | Als root/Admin ausführen | | ''No space left'' | Speicher voll | Alte Backups löschen | | ''Checksum mismatch'' | Korruptes Archiv | Erneut sichern | | Restore fehlgeschlagen | Falsche Berechtigungen | chown/chmod ausführen | ---- ===== Best Practices ===== **3-2-1 Backup-Regel:** * **3** Kopien der Daten * **2** verschiedene Medien (lokal + Cloud) * **1** Kopie offsite ---- ===== Verwandte Runbooks ===== * [[.:dsn-export|DSN-Export]] – DSN-Definitionen sichern * [[..:sicherheit:zertifikat-erneuern|Zertifikat erneuern]] – Vor Renewal sichern * [[..:tagesgeschaeft:server-starten|Server starten]] – Nach Restore ---- << [[.:start|← Backup]] | [[.:dsn-export|→ DSN-Export]] >> ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Data Gateway Professional// {{tag>operator runbook backup restore config}}