Skip to content

Backup (Sicherung) einer openWB manuell oder automatisch

Bembelfan edited this page Sep 14, 2021 · 23 revisions

Eine openWB-Installation kann manuell oder automatisch von einem externen System gesichert werden.

Manuelle Sicherung

Die manuelle Sicherung kann in der openWB-Weboberfläche unter "Einstellungen" - "System" - "Backup erstellen" - "Backup" gestartet werden.
Durch Aufruf des Menüpunkts sammelt die openWB alle relevanten Einstellungen sowie historische Logging-Daten und erstellt eine Sicherungsdatei.
Diese Sicherungsdatei kann lokal auf dem aufrufenden System gespeichert werden.

Starten einer Sicherung von einem externen System

Diese Sicherungsfunktionalität kann auch von einem externen System aufgerufen werden.
Dies geschieht per http-Aufruf dieses Links (zB in einem Browser):
http://<IP-Adresse der openWB>/openWB/web/settings/backup.php
Zum Beispiel: http://192.168.10.123/openWB/web/settings/backup.php

Automatische Sicherung mit Hilfe eines Synology NAS

Wenn man ein Synology NAS im gleichen Netzwerk verwendet, kann die Sicherung einer openWB auch automatisiert werden.
Dies geschieht mit Hilfe einer "geplanten Aufgabe" im "Aufgabenplaner": Dokumentation Synology

Hier hinterlegt man ein benutzerdefiniertes Script:

#!/bin/bash
WALLBOXBASEURL=http://192.168.10.123
WALLBOXFILE='/openWB/web/backup/backup.tar.gz'
OUTPUTDIR=/volume1/backup/openWB_Wallbox
OUTPUTFILE=${OUTPUTDIR}openWB_backup_$(date +%Y-%m-%d_%H-%M-%S).tar.gz

echo "Starte openWB Backup"
#curl -sS -o /dev/null ${WALLBOXBASEURL}/openWB/web/settings/backup.php
if [ $? -eq 0 ]
then
echo "Download openWB Backupdatei ${OUTPUTFILE}"
curl -sS -o "${OUTPUTFILE}" ${WALLBOXBASEURL}${WALLBOXFILE}
echo "Bereinigung alte openWB Backupdateien"
#ls "${OUTPUTDIR}"/openWB_backup_* | head -n -10 | xargs -d '\n' rm
else
echo "Fehler beim Erzeugen des openWB Backups"
fi
echo "openWB Backup beendet"

Folgende Parameter müssen individuell angepasst werden:
WALLBOXBASEURL=http://192.168.10.123: Hier muss die individuelle IP-Adresse der openWB eingetragen werden
OUTPUTDIR=/volume1/backup/Smarthome/openWB_Wallbox: Hier muss der individuelle Speicherpfad zum Sicherungsverzeichnis auf dem NAS angegeben werden. Der Speicherpfad sollte keine Leerzeichen enthalten.

Wenn Leerzeichen im Speicherpfad enthalten sind, kann der Speicherpfad anders angegeben werden. Hierbei müssen die Leerzeichen mit einem vorangestellten Backslash-Zeichen ** "entwertet" werden.
Ein Pfad /volume1/backup/open WB wird dann zu ~/volume1/backup/open\ WB/

Dieses Script erstellt eine Sicherungsdatei und legt diese auf dem hinterlegten Speicherpfad ab. Außerdem wird geprüft wie viele Sicherungsdateien im Speicherpfad bereits gespeichert sind. Wenn mehr als 10 Sicherungsdateien vorhanden sind, werden die ältesten Sicherungsdateien gelöscht bis nur noch 10 Sicherungsdateien vorhanden sind.

Hinweise:

  1. Solange weniger als 10 Sicherungsdateien im Speicherpfad existieren, erzeugt das Script einen Fehler "rm: missing operand".
    Einfach abwarten bis mindestens 10 Sicherungsdateien im Speicherpfad existieren. :-)
  2. Außerdem muss der hinterlegte Benutzer in der geplanten Aufgabe auch Schreibberechtigungen für den Speicherpfad besitzen.
  3. Für die Fehleranalyse ist es hilfreich im Aufgabenplaner die Skriptausgabe zu aktivieren (s. oben verlinkte Synology-Dokumentation).
  4. Dieses Script kann auch auf anderen Linux-Betriebssystemen verwendet werden, hierzu sind ggf. umgebungsspezifische Anpassungen notwendig.

Automatische Sicherung mit einem Windows-Betriebssystem

Wenn man auf einem Windows-Betriebssystem eine automatische Sicherung einrichten möchte, kann man dies zB über ein PowerShell-Script realisieren.
Ein PowerShell-Script kann zB über die Aufgabenplanung auf einem Windows-Betriebssystem automatisch gestartet werden.
Im Reiter Bedingungen noch den Haken bei 'Beenden, wenn Computer in Akkubetrieb wechselt' entfernen und dafür in 'Einstellungen' den Haken bei 'Aufgabe so schnell wie möglich nach einem verpassten Start ausführen' setzen - dann wird das Script auch durchgeführt wenn zum Zeitpunkt des geplanten Backups der Windows-Rechner nicht läuft.

In unserem Beispiel wird das PowerShell-Script mit dem Namen "Get-OpenWBBackup.ps1" lokal auf dem aufrufenden Windows-Rechner abgespeichert.

Ausgeführt wird "powershell.exe" mit diesen Parametern: "-ExecutionPolicy Bypass \Get-OpenWBBackup.ps1"

# Environmental parameters
$OpenWBIP = '192.168.178.51'
$LocalBackupFolder = "$Env:UserProfile" + '\Documents\'

# Generate backup file name, change optional
$LocalBackupFileName = ("OpenWB-backup-" + (get-date -format u) + ".tar.gz").Replace(":","-")
$LocalBackupPath = $LocalBackupFolder + $LocalBackupFileName

# Path definitions, no need to change them unless openWB changes location of those files
$OpenWBBackupPath = '/openWB/web/tools/backup.php'
$URIToCall = "http://" + $OpenWBIP + $OpenWBBackupPath

$Result = Invoke-WebRequest -uri $URIToCall #create backup

if ($Result.StatusCode -eq '200') # New backup created?
{
try {
#$OpenWBBackupDownloadPath = '/openWB/web/backup/backup.tar.gz'
# We could also use $Result.Links.href to dynamically fetch location if we wanted to. Does require extra handling if more than one link is provided
if ($Result.Links.Count -gt 1)
{throw "More than one link found in response, cannot proceed."}
$OpenWBBackupDownloadPath = $Result.Links.href
$BackupURI = "http://" + $OpenWBIP + $OpenWBBackupDownloadPath
Invoke-WebRequest -Uri $BackupURI -OutFile $LocalBackupPath # Download backup and store locally
Write-Host "Created backup at $LocalBackupPath" # we're done here
}
catch
{
Write-Host "Backup created but couldn't be downloaded."
}
}
else
{
Write-Host 'Unexpected return code when asking for backup:' ($Result.StatusCode) ($Result.StatusDescription)
}


Clone this wiki locally