Linux Backup mit der PowerShell

Nach dem SSH und SFTP mit der PowerShell Beitrag, wollte ich euch ein praxisnahes Beispiel vorstellen, ein Linux Backup mit der PowerShell. Wie bereits im Beitrag Backup Raspberry Pi to Windows geht es um die Sicherung von Daten auf einem Linux System, diesmal um die Daten von diesem Blog.

Die Daten werden über SSH aufbereitet, per SFTP abgeholt und dann lokal abgelegt. Auf dem Linux System muss dafür nichts angepasst werden, es wird alles über das PowerShell Skript gesteuert. Das Skript wird bei mir täglich über den Windows Task Scheduler gestartet und es funktioniert bisher sehr zuverlässig, ich kann aber für nichts garantieren! 🙂

Funktion

Zuerst wird das Credential Object Credentials erstellt. Dafür wird, wenn noch nicht vorhanden, einmalig das Kennwort angefordert. Dies wird dann verschlüsselt in das Password File geschrieben und beim nächsten Start des Skripts verwendet. Der erste Start sollte also direkt über die PowerShell Konsole erfolgen!

Das Skript verbindet sich dann per SSH mit dem Webserver und sichert den Content als gezipptes Archiv und die Datenbank über mysqldump in das RemoteBackupPath Verzeichnis. Somit ist schon mal eine lokale Sicherung für den Notfall vorhanden.

Im nächsten Schritt wird eine SFTP Verbindung aufgebaut und die in FilesToBackup definierten Dateien auf Existenz und Alter geprüft. Wenn die Datei älter ist als in MaxBackupAge definiert, wird die Datei vom Backup ausgeschlossen. Dann werden die Dateien auf das lokale System in den LocalBackupPath kopiert, ein Ordner mit dem Datum Today im Format YYYY-MM-TT erstellt und die Dateien in diesen Ordner verschoben. Ist beim Backup ein Fehler aufgetreten, wird an den Ordner ein Failed angehängt. So wird sichergestellt das der Aufräumprozess nicht alle erfolgreichen Sicherungen vernichtet.

Der Aufräumprozess lässt immer eine wie in HistoryDays definierte Anzahl an erfolgreichen Backups stehen. Ausgeschlossen werden monatliche Backups vom ersten Tag des Monats, vorausgesetzt das Backup war an diesem Tag erfolgreich. Wenn alles ohne Fehler durchgelaufen ist und SendOKMail auf $true steht, wird eine E-Mail verschickt die nur ein „OK“ enthält. Im Falle eines Fehlers, wird die nicht gesicherte Datei aufgelistet und zusätzlich das Logfile angehängt.

Skript

Das Skript ist aufgeteilt auf zwei Dateien und zusätzlich im Download Bereich zu finden. Ich hoffe die Variablen erklären sich soweit selbst?! Wenn noch Fragen bestehen einfach ein Kommentar hinterlassen!

Im folgenden Skript (Functions-Backup.ps1) sind ein paar Funktionen ausgelagert.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*

code