Skip to content

Backup (Sicherung) einer openWB manuell oder automatisch

Det edited this page Apr 30, 2022 · 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 bzw. http://<Hostname der openWB>/openWB/web/settings/backup.php
Zum Beispiel: http://192.168.10.123/openWB/web/settings/backup.php bzw. http://openwb.fritz.box/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"

USERNAME=""
PASSWORD=""

logging() {
  timestamp=$(date +"%Y-%m-%d %H:%M:%S")
  echo "$timestamp: $1"
}

logging "========= Starte openWB Backup ==================="
if [ -z "$USERNAME" ]; then
  curl -sS -o /dev/null "$WALLBOXBASEURL/openWB/web/settings/backup.php"
  ret=$?
else
  if [ -z "$PASSWORD" ]; then
    logging "ERROR: Es wurde ein Benutzer aber kein Passwort angegeben: Kein Backup möglich!"
    exit
  fi
  curl -sS -o /dev/null -u "${USERNAME}:${PASSWORD}" "$WALLBOXBASEURL/openWB/web/settings/backup.php"
  ret=$?
fi
if [ ${ret} -eq 0 ]; then
  logging "Download openWB Backupdatei ${OUTPUTFILE}"
  curl -sS -o "${OUTPUTFILE}" "${WALLBOXBASEURL}${WALLBOXFILE}"
  logging "Bereinigung alte openWB Backupdateien"
  ls "${OUTPUTDIR}"/openWB_backup_* | head -n -10 | xargs -d '\n' rm
else
  logging "Fehler beim Erzeugen des openWB Backups"
fi
logging "========= openWB Backup beendet ==================="

Folgende Parameter müssen individuell angepasst werden:

  • WALLBOXBASEURL="http://192.168.10.123": Hier muss die individuelle IP-Adresse oder Hostname der openWB eingetragen werden
  • OUTPUTDIR="/volume1/backup/Smarthome/openWB_Wallbox": Hier muss der individuelle Speicherpfad zum Sicherungsverzeichnis auf dem NAS angegeben werden ohne Schrägstrich am Ende.
  • USERNAME="": Wenn in der openWB ein Zugriff per Benutzer und Passwort eingerichtet wurde, muss hier der entsprechende Benutzer eingetragen werden.
  • PASSWORD="": Wenn in der openWB ein Zugriff per Benutzer und Passwort eingerichtet wurde, muss hier das entsprechende Passwort eingetragen werden.

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.

Hier findet sich ein PowerShell Script welches heruntergeladen und in einem beliebigen Ordner als Get-OpenWBBackup.ps1 gespeichert wird: https://openwb.de/forum/viewtopic.php?p=35525#p35525
Beim ersten Aufruf fragt das Script nach der IP Adresse der openWB und erstellt automatisch den geplanten Task im Windows Taskplaner um eine automatische Sicherung alle 30 Tage durchzuführen. Der Rechner muss hierzu nicht laufen, ein verpasstes Backup wird nachgeholt sobald der Rechner wieder eingeschaltet wurde

Eine sofortige Sicherung startet das Script mit dem Parameter -RunOnce. Weitere Optionen finden sich mit Get-Help Get-OpenWbBackup

Alternativ kann auch die Basisversion des Scripts verwendet werden, hierzu dieser Anleitung weiter folgen:

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"

$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(":","-")`<br>
$LocalBackupPath = $LocalBackupFolder + $LocalBackupFileName`<br>

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

$Result = Invoke-WebRequest -uri $URIToCall #create backup`<br>

if ($Result.StatusCode -eq '200') # New backup created?`<br>
{
    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