über mich
mein motto

Visual C# 2008 - Das Videotraining von Lars Keller

followme

Get your 'feeds' on Follow me on Twitter Currently no podcasts available

recentcomments

Comment RSS

community

Community Leader / Insider Program VSTO Taskforce Just Community .NET Developer Group Braunschweig

SQL Server Backup, Zip und FTP(s) Up-/Download mit EasySQLBackupFtp

12. September 2010 | Geändert: 12. September 2010 | .NET Entwicklung | Tools 0

Ich stand vor dem Problem ein regelmäßiges Backup bei einer SQL Server Express Edition durchzuführen (der SQL Express hat keinen Job Agent, darum kann dies nur über ein Batch machen). Des Weiteren sollte das Backup gezippt und Passwort verschlüsselt werden. Danach soll das Zip per FTP oder FTPs versendet und im Fehlerfall sollte mir eine E-Mail mit dem Logfile geschickt werden. In meinem Fall muss ich das Backup auch per Download an einen weiteren Ort kopieren, diese Funktionalität habe ich auch in das Tool integriert. Somit kann mit dem Konsolentool ein automatisierter Download sowie Backups (mit FTP(s) Versand) per Taskplaner festgelegt werden.

Powershell Erfahrung

Zuerst habe ich es mit der Powershell probiert. Die Powershell ist wirklich ein mächtiges Werkzeug! Ein SQL Server ein Backup zu entlocken, ist sehr einfach mit der Powershell. Das Zippen fand ich dann schon komplizierter… Nach einer Weile bin ich dann übergegangen mir ein eigenes Tool in C# zu schreiben (da bin ich eindeutig schneller ;-). Gesagt getan und ich möchte allen, die vor dem ähnlichen Problem stellen ein automatisiertes SQL Server Backup zu erstellen, mein Tool zur Verfügung stellen.

EasySQLBackupFtp(s)

EasySQLBackupFtp

Das Tool kann über verschiedene Parameter, welche in der App.Config angepasst werden, gesteuert werden. Es bietet in der ersten Version die Modi: Backup, BackupAndFtp und Download an (Weitere Informationen dazu s.u.). Weiterhin bietet das Tool die Möglichkeit über FTP oder FTPS das gezippte Backup zu verschicken. Das Tool loggt im Hintergrund alle relevanten Aktionen mit und im Fehlerfall wird eine E-Mail mit dem LogFile verschickt. Des Weiteren kann das Zip an einen anderen Ort kopiert werden und dies Abhängig von der Uhrzeit. Diese Funktion habe ich eingebaut, da ich ein Backup x1 am Tag per Download abhole, aber es gibt mehrere Backups am Tag.

Verschiedene Modi

Backup: Es wird ein SQL Backup erstellt und dies gezippt

BackupAndFtp: Es wird wie im Modus Backup ein Zip erstellt und dies automatisch per FTP(s) an einen Server transferiert

Download: Dieser Modus ermöglicht das herunterladen von Zips per Ftp(s).

Einstellungen in der App.Config:

SQLServer = SQL Server von dem das Backup gezogen werden soll
Database = Datenbankname
BackupPath = Pfad in dem das Backup erstellt wird
ZipFilePath = Pfad für die Erstellung des Zips
FTPServer = IP des FTP Server
FTPPath = FTP-Pfad für den Upload des Zips
FTPUsername = FTP Login
FTPPassword = FTP Password
MailServer = Mailserver IP
MailFrom = E-Mail von der der Fehlerbericht versendet wird
Mailto = E-Mail wohin die Fehlermeldung geschickt wird
FTPDownloadPath = FTP Pfad von dem ein Zip runtergeladen werden soll
FTPDownloadFileName = Angabe des Download Filename, es werden auch Wildcards unterstützt (z.B. *.zip)
DeleteAfterFTPDownload = Soll nachdem Download das File auf dem FTP gelöscht werden (true/false)
FTPDownloadLocalDir = Lokaler Downloadpfad.
DeleteFilesAfterXDays = Angabe nach wie vielen Tagen sollen Files auf dem FTP Sever gelöscht werden. Dies wird geprüft, wenn Files per FTP an einen Server übertragen werden.
FileNameToZip = Name des Zips
CopyZipToDir = Pfad für die lokalen Speicherung auf dem Server, z.B. um das Zip per FTP erreichbar zu machen, somit muss der eigentlich Speicherort nicht unbedingt vom Internet erreichbar sein.
DoNotCopyBeforeTime = Ab wann soll das Zip woanders hinkopiert werden (Angabe in Form von 13:00:00). Dies dient dazu, wenn man mehrfach ein Backup erstellt, aber nur bestimmte Version per FTP erreichbar machen möchte.
UseFTPForUpload = Soll FTP und nicht FTPs für den Upload genutzt werden? (true/false)
UseFTPForDownload = Soll FTP und nicht FTPs für Download genutzt werden? (true/false)
ZipPassword = Hier kann ein Passwort für das Zip eingestellt werden

Herunterladen könnt Ihr es hier:

EasySQLBackupFtp.zip (292,84 kb)

EasySQLBackupFtp_src.zip (295,41 kb)

kick it on dotnet-kicks.de