Für das automatische Backup der SQL-Datenbanken bei All-Inkl aus dem letzten Beitrag fehlt nun noch ein automatischer Download der auf dem Server abgelegten Backups, damit diese nicht von der Daten-Verfügbarkeit des Providers abhängen. Da ich seit geraumer Zeit Filezilla nutze, für welches es leider keine Automatisierungs-Möglichkeiten gibt und mir die Templates mit Powershell für den einfachen Download von ein paar Dateien etwas überdimensioniert aussahen, habe ich das ebenfalls kostenlose WinSCP, welches über ausreichende Scripting-Möglichkeiten verfügt, dafür genutzt. Vorhandene Verbindungsdaten aus Filezilla lassen sich beim Start von WinSCP importieren, was ich der Einfachheit halber genutzt habe.
Die gespeicherten Verbindungsdaten können in einem Skript leider nicht verwendet werden. Wenn man WinSCP manuell über die Kommandozeile benutzt kann man zum Öffnen einer Verbindung einfach den Session-Namen angeben, unter dem die Daten gespeichert sind, z. B.:
1 2 3 4 |
C: cd "C:\Program Files (x86)\WinSCP\" winscp.com winscp>open all-inkl |
Dazu habe ich auch einen Thread im WinSCP-Forum gefunden. Vermutlich wurde die Nutzung des Session-Namens für Skripte grundsätzlich deaktiviert, weil diese aus Sicherheitsgründen nicht empfohlen wird. Für mich nicht ganz nachvollziehbar, denn rein aus Sicherheitsgründen ändert sich nichts, da deshalb im Skript die Zugangsdaten direkt hinterlegt werden müssen. In WinSCP lässt sich dafür recht einfach eine sogenannte Session-URL generieren:
Wichtig: Da ich FTP mit Erzwingung von TLS zur Verschlüsselung nutze, wird hier als Protokoll FTPES angegeben und nicht FTP! Sofern der Provider eine Verschlüsselung unterstützt ist diese immer einer normalen FTP-Verbindung vorzuziehen!
In einem Batch-Skript, welches stur die Dateien aus dem Ordner backups vom Server herunterlädt und dort löscht, sieht das dann etwa so aus:
1 2 3 4 5 6 7 8 |
C: cd "C:\Program Files (x86)\WinSCP\" winscp.com /ini=nul /command ^ "open ftpes://w123456:1234567890@domain.de/backups -certificate="xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx" -rawsettings ProxyPort=0" ^ "get -delete * D:\Backups\" ^ "close" ^ "exit" |
Tipp: Um direkt den entsprechenden Ordner auf dem Server zu öffnen fügt man diesen hinter der URL an.
Bei der Ausführung des Skripts sieht man den Datei-Download, anschließend wird die Sitzung wieder getrennt:
Das fertige Skript braucht man dann nur noch über die Aufgabenplanung automatisch zu einem gewünschten Zeitpunkt ausführen lassen 🙂
Quellen:
https://winscp.net/eng/docs/library_from_script
https://winscp.net/eng/docs/guide_automation
https://winscp.net/eng/docs/faq_scheduler