MySQL Backup Script mit FTP-Upload

Nicht gerade selten kommt es vor, das Backups eine sinnvolle und vorallem hilfreiche Lösung bieten, wenn nach Updates oder dem Wechsel eines Servers etwas schief geht. Gerade die Datenbanken sind hierbei oftmals mit sensiblen Daten gefüllt, welche unbedingt gesichert werden sollten und dies am Besten redundant. Ich möchte an dieser Stelle ein kleines Script vorstellen, welches die Möglichkeit bietet Backups der einzelnen Datenbanken zu erstellen und diese lokal auf den Server selbst, sowie Remote auf einen FTP-Server ablegt.

Was benötigen wir hierfür? Zunächst einmal benötigen wir einen MySQL-Zugang, der Zugriff auf alle Datenbanken hat. Hier reicht es, wenn für den entsprechenden Benutzer Zugriffe aus localhost (127.0.0.1 in IPv4 oder ::1 in IPv6) gewährt werden. Sollen besagte Sicherungen von einem anderen Server erstellt werden, muss dafür natürlich ebenfalls ein entsprechendes Zugriffsrecht existieren. Weiterlesen

PowerShell Scripte in .NET Anwendungen

Die Windows PowerShell ist eine sehr leistungsfähige Konsole, die mit stark geprägten Befehlen daher kommt. Diese ermöglichen eine ausführliche Aktionsreichweite unter Windows-Systemen. Oft sind sehr ähnliche Anforderungen oder gar die Anforderung diese Scripte ausführen zu können auch an uns Entwickler gestellt. Nun mit der Hilfe vom Microsoft .NET 4.0 und der Assembly „System.Management.Automation.dll“ ist dies auf sehr einfachem Wege möglich (.NET 4.0 ist hier leider die minimal Version, zumindest bei der Installation über NuGET, die mir bis dato als einzige bekannt ist). Um dies nun nutzen zu können, sollten wir also zunächst über die Paket-Konsole von NuGET folgende Aktion ausführen:

Install-Package System.Management.Automation

Hiermit wird die bereits genannte Assembly in unser Projekt installiert. Im Weiteren können wir uns der implementierung widmen. Ich werde dies hier anhand einer Konsolenanwendung vornehmen. Es funktioniert jedoch natürlich auch unter WPF und WinForms sowie ASP. Für das folgende Beispiel werden noch zusätzlich folgende Using-Directives benötigt:

using System;
using System.Collections.ObjectModel;
using System.Linq;
using System.Management.Automation;
using System.Text;

Und anschließend (hier aufgrund der Konsolenanwendung statisch) können wir uns der Implementierung widmen. Weiterlesen