Scheduled Backup

Auflistung von gewünschten Features, Ausschreibung zur Umsetzung
Benutzeravatar
mrinas
Beiträge: 1867
Registriert: Mi Jan 29, 2020 10:12 pm

Re: Scheduled Backup

Beitrag von mrinas »

So, das hier klappt nun und verwendet den Link welchen die openWB beim Aufruf der backup.php liefert.

Ich starte das über die Aufgabenplanung auf meinem PC einmal monatlich. 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 auch durchgeführt wenn zum Zeitpunkt des geplanten Backups der Rechner gerade nicht läuft.

Ausgeführt wird "powershell.exe" mit diesen Parametern: "-ExecutionPolicy Bypass C:\Users\martrin\OneDrive\openWB\Get-OpenWBBackup.ps1" Wobei der Pfad & Name zum Script natürlich noch auf die eigene Umgebung angepasst werden muss.

Code: Alles auswählen

# 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 # Downlaod 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)   
}
15,2kWp SMA (SB4000TL-21, SB3.0, STP6.0-SE + BYD HVS, EnergyMeter), openWB Standard+, openWB Pro, Peugeot e2008, Tesla Model Y LR.
MichaO
Beiträge: 268
Registriert: Di Mär 19, 2019 7:58 am

Re: Scheduled Backup

Beitrag von MichaO »

Die "neue" Routine liefert die Backupddatei zB als "openWB_backup_2021-01-08_13-20-00.tar.gz", wobei der Zeitstempel natürlich variabel ist. Damit bräuchte der Nutzer nicht jeden gleichlautenden Download "backup.tar.gz" erst so umbenennen, dass er später noch weiß, was und wann da gemacht wurde.

Für die andere Richtung - also die Wiederherstellung - hab ich die php schon angepasst und werde sie mit in den Pull Request nehmen. Da kann jetzt jeder Dateiname mit Extension gz verwendet werden, es muss also vorher nicht in "backup.tar.gz" umbenannt werden, falls es lokal unter anderem Namen abgespeichert wurde.

Die Bedenken von benderl sind ja, dass Eure Skripte wegen des variablen Dateinamens nicht mehr laufen. Wenn ihr mit $Result.Links.href an den dynamischen Pfad kommt, sollte das gehen. Mein vorgeschlagenes backup.php leert vor dem anlegen des neuen zip das Verzeichnis, es sollte also nur die eine Datei dort liegen.

Ich hab zum Testen mal die geänderte Datei angehängt... () Verzeichnis openWB/web/tools

Wäre klasse, wenn das jemand testen würde. Ihr braucht dann theoretisch das Backup auch nicht mehr umbenennen, ist ja dann schon ein Zeitstempel drin ;)
Dateianhänge
backup.php.zip
(1.76 KiB) 211-mal heruntergeladen
LutzB
Beiträge: 3479
Registriert: Di Feb 25, 2020 9:23 am

Re: Scheduled Backup

Beitrag von LutzB »

Ok, für Powershell gibt es schon eine Lösung. Wenn jetzt noch das Skript zum Backup auf Linux/NAS angepasst wird, kommt der PR rein. Ich möchte das nur nicht einfach so unangekündigt reinnehmen, wo es gerade seit kurzem funktioniert.
MichaO
Beiträge: 268
Registriert: Di Mär 19, 2019 7:58 am

Re: Scheduled Backup

Beitrag von MichaO »

Falls das mit curl und den variablen Dateinamen nicht geht, dann kann ich auch bei der backup.php einen Parameter einrichten, so dass dann ohne Zeitstempel gespeichert wird, etwa backup.php?timestamp=none, so dass dann als „openWB_backup.tar.gz“ erzeugt wird.

Sagt einfach Bescheid, dann passe ich das an.
Benutzeravatar
mrinas
Beiträge: 1867
Registriert: Mi Jan 29, 2020 10:12 pm

Re: Scheduled Backup

Beitrag von mrinas »

Könnte man mit einem sym link o.ä. einen Verweis von der backup.tar.gz auf die stets aktuelle Datei mit Zeitstempel erstellen? Der Link auf der Download-Seite wäre dann stets der mit Zeitstempel, wenn jemand aber weiterhin auf den alten Namen zugreift würde es dennoch klappen.
15,2kWp SMA (SB4000TL-21, SB3.0, STP6.0-SE + BYD HVS, EnergyMeter), openWB Standard+, openWB Pro, Peugeot e2008, Tesla Model Y LR.
MichaO
Beiträge: 268
Registriert: Di Mär 19, 2019 7:58 am

Re: Scheduled Backup

Beitrag von MichaO »

Nachdem ich über das Problem heute Nacht nachdenken konnte, glaube ich, dass die Sache für alle am einfachsten so ist:

Aufruf der backup.php ohne Parameter erzeugt das bisherige Ergebnis, also eine backup.tar.gz
Aufruf der php mit Parameter extendedFilename=1 erzeugt das besser für den lokalen Download geeignete Ergebnis openWB_backup_YYYY-MM-DD_HH-mm-ss.tar.gz

So können alle Skripte beibehalten werde, es gibt immer nur die eine Datei im Verzeichnis und alle sollten glücklich sein. Ich hab das jetzt in der php geändert, für Euch müsste dann alles so bleiben wie bisher.
JSAnyone
Beiträge: 291
Registriert: Fr Jun 05, 2020 5:56 pm

Re: Scheduled Backup

Beitrag von JSAnyone »

Hab das Skript zwar nicht auf die neue oWB-Struktur angepasst (aber Dank MichaO sollte das jetzt ja auch ohne Änderung funktionieren), habe es aber so verändert, dass immer zwei Versionen gespeichert werden. Also das aktuelle Backup und das vorherige, das ist mir sympathischer.
Erwartete Ordnerstruktur (schon davor anlegen!):
Einen Ordner anlegen in den die Backups sollen (das ist der Pfad der in der Variable $OUTPUTDIR angegeben ist), und in diesen Ordner dann zwei weitere Ordner erstellen, nämlich Backup_1 und Backup_2. Hier kommen dann die eigentlichen Backups rein, wobei im Ordner Backup_1 immer das aktuelle und im Ordner Backup_2 das vorherige ist.
Das eigentliche Skript, die beiden Variablen müssen natürlich entsprechend eintragen werden:

Code: Alles auswählen

#!/bin/bash

WALLBOXBASEURL=http://
OUTPUTDIR=

rm $OUTPUTDIR/Backup_2/*
mv $OUTPUTDIR/Backup_1/* $OUTPUTDIR/Backup_2/
curl -sS -o /dev/null $WALLBOXBASEURL/openWB/web/tools/backup.php
if [ $? -eq 0 ]
then
  curl -sS -o $OUTPUTDIR/Backup_1/openwb-backup-$(date +%Y%M%d).tar.gz $WALLBOXBASEURL/openWB/web/backup/backup.tar.gz
else
  echo "Failed to create Backup"
fi
MichaO
Beiträge: 268
Registriert: Di Mär 19, 2019 7:58 am

Re: Scheduled Backup

Beitrag von MichaO »

Danke für die Anpassung. Ich hatte ja wie gesagt nicht gesehen, dass hier Skripte auf die Backup-Datei zugreifen. Ist aber kein Problem, da ich die Anpassung jetzt ja so vorgenommen habe, dass sich nach außen bei Aufruf der backup.php ohne Parameter nichts ändert.
LutzB
Beiträge: 3479
Registriert: Di Feb 25, 2020 9:23 am

Re: Scheduled Backup

Beitrag von LutzB »

Die Änderungen sind jetzt in der Nightly. Bitte testen. 8-)
cjungde
Beiträge: 115
Registriert: Mo Jan 27, 2020 9:48 pm

Re: Scheduled Backup

Beitrag von cjungde »

Ich habe gerade auf die "installierte Version: 1.9.009 (2021-01-14 16:04:07 +0100 [016f66c6] )" aktualisiert und das Skript läuft auf meiner Synology immer noch und tut was es soll.

>> Alles Bestens !
Heckert 9,9 kWp PV
Fronius Symo 10.0-3-M WR
SENEC Speicher 5 kWh
openWB series2 standard+
Auto: Zoe R110
Restliche Hausautomation: FHEM
Antworten