Automatisierte Datensicherung in der Pascom.Cloud und Export

Hallo liebes Forum,

ich stelle mir gerade die Frage, wie man eine Pascom Cloud automatisiert sichert und den SQL Dump sowie die Ansagen automatisch auf zB einen FTP Server oder eine NextCloud oder sonst wohin schieben kann?!

Bestimmt bin ich nicht der Einzige, der nicht jeden Tag eine manuelle Sicherung macht :slight_smile:

In der Doku habe ich auf die Schnelle nichts gefunden.

Wie macht ihr das?

Grüße
Seppos

Hallo zusammen,

selbige Frage habe ich mir soeben auch gestellt. Eine manuelle Sicherung der DB geht zwar flott, es muss aber immerhin jmd. händisch angehen.

Danke und Gruß
Philip

Hab auch noch keine Lösung dazu…

Hallo zusammen,

ist eigentlich ganz einfach über die API lösbar.
Das Backup kann man mit folgendem Befehl triggern (Variablen %xx% sind durch die Pfade zur Instanz oder lokalen Verzeichnissen zu ersetzen):

curl --netrc-file "%Netrc%" -X POST "%URL%/%Instanzname%/services/apply/" -H "Content-Type: application/json" -d "{""executor"":""tsk"",""task"":""050313"",""waitconfirm"":0,""args"":[""%Instanzname%.tgz|1,1,1""]}"

Und anschließend mit diesem herunterladen:
curl --netrc-file "%Netrc%" --remote-name %URL%%Instanzname%/services/trc050313/%Instanzname%.tgz

Das netrc File muss mit den API Zugangsdaten der jeweiligen Instanz lokal vorhanden sein.

Daraus habe ich dann ein Skript gebaut welches automatisiert ausgeführt werden kann und die Backups sortiert und nach einer gewissen Zeit wieder löscht.

Und wer das lieber mit Powershell machen möchte, kann das so lösen:

clear host
$date = get-date -Format "yyyy-MM-dd_HH_mm"
$pasinstance = "HIER DEN INSTANZNAMEN"
$filename = $pasinstance + ".tgz"
$basicAuthValue = "Basic HIER DEN BASICAUTHSTRING"
$baseurl = "https://pascom.cloud/" + $pasinstance
$backupname = $date + "_" + $filename
$body=@{"executor"="tsk"; "task"="050313"; "waitform"="0"; "args"=@($filename+"|1,1,1,1]")}

$uri = $baseurl + "/services/apply/"

$headers = @{Authorization = $basicAuthValue}

$response = Invoke-RestMethod -Uri $uri -Headers $headers -Body ($body|ConvertTo-Json) -Method Post -ContentType "application/json"

Start-Sleep -Seconds 20
$uri = $baseurl + "/services/trc050313/" + $filename
$backupresult = Invoke-WebRequest -Uri $uri -Headers $headers -OutFile c:\temp\$backupname

Man könnte das Skript auch mit Parametern aufrufbar machen, dann wäre es noch etwas universeller.

1 Like

Ja Mega! Danke euch dafür!

@Andi Wäre das nicht auch etwas für die Doku in der How To Sektion oder so?

Hallo @Seppos,

in der Dokumentation werden nur Themen behandelt, bei welchen man auch von unserem
Support Team Unterstützung bekommt. Bei diesen “Eigenbasteleien” muss ich hier auf das Forum verweisen.
Ist aber eine tolle Lösung. Vielleicht bietet sich ja jemand an, ein fertiges Skript zu basteln, welches man in der “HowTo” - Sektion des Forums platzieren kann. Dann lässt sich das für Interessierte einfach nachbasteln.

Grüße
Andi

Kann man so sehen und sicher auch machen. Die Kirsche auf der Sahnehaube wäre natürlich, wenn man da überhaupt nicht skripten müsste sondern Pascom die automatisierte Backup-Erstellung gleich als Cron-Job implementiert. Dann bestünde die Aufgabe für den Kunden “nur” noch im Herunterladen des Updates. Früher gab es da ja schon mal die Möglichkeit für einen Cron-Job. Die ist ja leider entfernt worden.

Das dann über die REST-API als Endpunkt bereitzustellen, wäre ein Lösung, die allen gerecht würde ganz ohne individuelle Skripte.

Und wenn dann mal ganz viel Zeit vorhanden ist:

Noch etwas mehr Komfort durch eine FTP-Upload-Funktion auf einen FTP-Server des Kunden und man müsste sich noch nicht einmal um das Herunterladen kümmern.

1 Like

Hallo,

sollte das PowerShell Schnipselchen so noch in der aktuellen Cloud Pascom funktionieren?

Ich lande immer bei nem 401er - den BasicAuthValue hab ich über Informationen-Entwickler-REST-Zugangsdaten-Anzeigen gefunden. Wenn ich die Zusammengesetzte URL im Browser teste klappt es mir Username/Password - aber nicht mit dem Auth-Token. Oder muss ich da noch irgend etwas freischalten damit das tut?

MfG,
Jesko

Ich habe das PS-Skript ganz aktuell noch einmal an einer Cloud-Instanz getestet und es funktioniert nach wie vor. Das Wort Basic hast Du im Skript aber schon noch stehen lassen, oder?

1 Like

Ich hab es eben hinbekommen… mit folgender Anpassung:
-Headers @{Authorization=(“Basic {0}” -f $basicAuthValue)}

Prima, dass es nun klappt. Mal so rein aus Interesse: Welche PS-Version nutzt Du?

Da muss ich kurz ausholen… Ich teste lokal - später wird das aber über unsere RMM Software (ninjaone) getriggert - und die führt dann die PS auf einem Server aus.
aktuell auf meinem Test-Server ( Server 2019 ): 5.1.20348.859
aktuell auf meinem Test-Rechner (Windows 11): 5.1.22621.436

Gleiches Verhalten auf beiden Systemen.

Oh, da habe ich mich unglückliche ausgedrückt. Ich meinte die PS-Version, nicht die OS :slight_smile: Also die Powershell-Version, die Dir mit get-host oder $PSVersionTable.PSVersion angezeigt wird.

noch ne doofe frage: kann ich da auch einstellen, das auch die chat dateien und nachrichten mit gesichert werden? danke

Ne, das war schon richtig ausgedrück - und glaub auch von mir richtig beantwortet…

Auf meinem Testrechner ( windows 11 )

$PSVersionTable.PSVersion
Major Minor Build Revision


5 1 22621 436

Das ist ziemlich exakt die Versionsnummer.

die werden bereits berücksichtigt. Wird im Body mit übergeben. Die Argumente hinter Filename legen das fest. Aber wie immer ohne Gewähr, also bitte entsprechend testen.

$body=@{"executor"="tsk"; "task"="050313"; "waitform"="0"; "args"=@($filename+"|1,1,1,1]")}

Ja, stimmt wohl. War wohl noch zu früh und zu wenig Kaffee :wink:

Allerdings verstehe ich es noch weniger. Bei einer anderen PS-Version hätte ich mir ja noch vorstellen können, dass sich die Syntax geändert hat, aber bei mir ist es identisch. Mit PS 7 habe ich noch nicht getestet, vermutlich würde es da auch funktionieren. Nun gut, wieder etwas gelernt.

hmm… wenn ich das backuß per hand mache und alles auf “Ja” stelle ist das backuß fast doppelt so groß als wie übers script ?


im manuellen backup ist die datei “assets.tgz” mit dabei … beim script nicht… das könnt es sein:
image

ich teste mal bei gelegeheit das importieren des backuß und dann seh ich schon was dabei ist - danke

da müsste dann ggf. @staff mal was zu sagen. Vllt. hat sich die Syntax geändert. Das ist ja immer das Problem, wenn es keine klar definierte und dokumentierte Funktion dafür gibt. Die REST-Api bietet hier leider keinen definieren Endpunkt für an, dass würde es deutlich einfacher machen.

1 Like