Müssen regelmäßig Dateien von einem FTP- oder SFTP-Server auf einen lokalen Windows-PC übertragen werden, lässt sich dieser Vorgang mit WinSCP automatisieren.
WinSCP ist ein kostenloses Programm zur Dateiübertragung, das neben einer grafischen Oberfläche auch eine Skriptsteuerung unterstützt. Damit können Dateien beispielsweise täglich oder stündlich automatisch synchronisiert werden, ohne dass WinSCP manuell gestartet werden muss.
In dieser Anleitung zeige ich, wie eine Synchronisierung vom Server auf einen lokalen Ordner eingerichtet und anschließend über die Windows-Aufgabenplanung automatisiert ausgeführt wird.
1. Voraussetzungen
Für die Einrichtung werden benötigt:
- Windows 11 oder ein unterstütztes Windows-Server-Betriebssystem
- Installiertes WinSCP
- Zugangsdaten zu einem FTP-, FTPS- oder SFTP-Server
- Ein lokales Verzeichnis für die synchronisierten Dateien
- Berechtigung zum Einrichten einer Aufgabe in der Windows-Aufgabenplanung
Hinweis zur Sicherheit:
Wenn möglich, sollte SFTP (SSH File Transfer Protocol) oder FTPS (FTP über TLS) verwendet werden. Bei unverschlüsseltem FTP werden Zugangsdaten und Dateien ohne ausreichenden Schutz übertragen.
2. Funktionsweise
Die Synchronisierung erfolgt über zwei Dateien:
ftp-sync-to-local.txt
- Diese Textdatei enthält die WinSCP-Befehle. Sie stellt die Verbindung zum Server her und legt fest, welche Verzeichnisse synchronisiert werden.
ftp-sync-to-local.bat
- Die Batch-Datei startet WinSCP, führt die Skriptdatei aus und erstellt ein Protokoll. Zusätzlich wird geprüft, ob die Synchronisierung erfolgreich war.
- Die Batch-Datei kann anschließend über die Windows-Aufgabenplanung automatisch gestartet werden.
3. Verbindung in WinSCP einrichten
Zunächst wird WinSCP geöffnet und eine Verbindung zum gewünschten Server eingerichtet.
- WinSCP starten.
- Eine neue Sitzung anlegen.
- Als Übertragungsprotokoll vorzugsweise SFTP auswählen.
- Serveradresse, Benutzername und die erforderlichen Anmeldedaten eingeben.
- Die Verbindung herstellen und überprüfen.
- Die Sitzung unter einem eindeutigen Namen speichern, beispielsweise
MeinSFTP-Server.
Gespeicherte Sitzungen sind benutzerabhängig. Wird die Aufgabe später unter einem anderen Windows-Benutzer ausgeführt, muss die Verbindung auch für diesen Benutzer verfügbar sein.
4. WinSCP-Skriptdatei erstellen
Im Beispiel werden die Dateien aus dem Serververzeichnis /daten in den lokalen Ordner C:\temp\ftpdaten synchronisiert.
Dazu wird eine Textdatei mit folgendem Inhalt erstellt:
Dateiname: ftp-sync-to-local.txt
option batch abort
option confirm off
open "MeinSFTP-Server"
synchronize local "C:\temp\ftpdaten" "/daten"
exit
Die Datei wird unter C:\Scripts\ftp-sync-to-local.txt gespeichert, vorzugsweise UTF-8-codiert.
Erklärung der Befehle
option batch abort
Beendet die Ausführung bei Fehlern, statt auf eine manuelle Eingabe zu warten.
option confirm off
Deaktiviert Bestätigungsabfragen. Beim automatisierten Skriptaufruf sind solche Abfragen ohnehin weitgehend deaktiviert.
open
Stellt die Verbindung zum Server her. Im Beispiel wird eine zuvor gespeicherte WinSCP-Sitzung verwendet.
synchronize local
Synchronisiert Dateien vom entfernten Server in das angegebene lokale Verzeichnis.
exit
Beendet die WinSCP-Sitzung und das Programm.
Alternative: Verbindungsdaten direkt im Skript
Anstelle einer gespeicherten Sitzung kann die Verbindung auch direkt im Skript definiert werden.
Beispiel für SFTP:
open sftp://benutzer@server.example.de/ -hostkey="SERVER-HOSTKEY-FINGERABDRUCK"
Der Platzhalter muss durch den tatsächlichen SSH-Hostkey-Fingerabdruck ersetzt werden. Auch die Authentifizierung muss für den unbeaufsichtigten Betrieb eingerichtet sein.
Die korrekte Verbindungszeile lässt sich in WinSCP über die Funktion Sitzungs-URL/-Code erzeugen generieren. Die genaue Bezeichnung kann je nach Programmversion und Spracheinstellung abweichen.
- dazu in WinSCP die Verbindung zum FTP-Server herstellen
- Tabs -> Sitzungs- URL/-Code erzeugen -> Script -> Scriptdatei
Dabei kann WinSCP auch die erforderlichen Parameter für das verwendete Übertragungsprotokoll ergänzen.
5. Synchronisationsverhalten festlegen
Der Befehl
synchronize local "C:\temp\ftpdaten" "/daten"
gleicht das lokale Verzeichnis mit dem Serververzeichnis ab.
Dabei werden standardmäßig neue und entsprechend geänderte Dateien vom Server übertragen.
Es gibt zusätzliche Parameter, mit denen sich das Verhalten beeinflussen lässt.
Vollständige Spiegelung
synchronize local -mirror -delete "C:\temp\ftpdaten" "/daten"
Mit -mirror werden auch ältere Dateien vom Server erneut übertragen, wenn sie sich von den lokalen Dateien unterscheiden.
Mit -delete werden zusätzlich Dateien im lokalen Zielverzeichnis gelöscht, die auf dem Server nicht mehr vorhanden sind.
Achtung: Diese Variante sollte nur verwendet werden, wenn das lokale Verzeichnis tatsächlich ein vollständiges Abbild des Serververzeichnisses sein soll. Lokal vorhandene Dateien können andernfalls verloren gehen.
Synchronisierung zunächst testen
synchronize local -preview "C:\temp\ftpdaten" "/daten"
Mit -preview zeigt WinSCP die vorgesehenen Änderungen an, ohne sie tatsächlich auszuführen.
Damit lässt sich vor der ersten produktiven Synchronisierung überprüfen, welche Dateien übertragen würden.
6. Batch-Datei für die automatische Ausführung
Damit die Skriptdatei ausgeführt werden kann, wird eine Batch-Datei erstellt.
Dateiname: ftp-sync-to-local.bat
@echo off
set "WINSCP=C:\Program Files (x86)\WinSCP\WinSCP.com"
set "SCRIPT=C:\Scripts\ftp-sync-to-local.txt"
set "LOG=C:\Scripts\ftp-sync.log"
"%WINSCP%" /script="%SCRIPT%" /log="%LOG%"
set "RESULT=%ERRORLEVEL%"
if not "%RESULT%"=="0" (
echo Fehler bei der Synchronisierung.
echo Fehlercode: %RESULT%
exit /b %RESULT%
)
echo Synchronisierung erfolgreich.
exit /b 0
Die Batch-Datei wird ebenfalls unter C:\Scripts gespeichert.
Der Installationspfad von WinSCP muss gegebenenfalls angepasst werden.
Warum WinSCP.com statt WinSCP.exe?
Für die automatisierte Ausführung empfiehlt sich WinSCP.com.
Dabei handelt es sich um die Konsolenanwendung von WinSCP, die speziell für Skripte und die Verarbeitung von Befehlen geeignet ist.
Die Anwendung liefert einen Rückgabecode:
0– Die Ausführung wurde ohne gemeldeten Fehler abgeschlossen.1– Bei der Ausführung ist ein Fehler aufgetreten.
Mit diesem Rückgabecode kann die Windows-Aufgabenplanung erkennen, ob das Skript erfolgreich abgeschlossen wurde.
Protokollierung
Durch den Parameter
/log="C:\Scripts\ftp-sync.log"
wird eine Protokolldatei erstellt.
Sie enthält Informationen über die Verbindung, die ausgeführten Befehle und mögliche Fehler.
Bei regelmäßig ausgeführten Aufgaben sollte die Größe der Protokolldateien überwacht beziehungsweise eine Protokollrotation eingerichtet werden.
7. Automatische Ausführung über die Windows-Aufgabenplanung
Damit die Synchronisierung regelmäßig und ohne manuelle Eingriffe erfolgt, kann die Batch-Datei über die Windows-Aufgabenplanung gestartet werden.
- Windows-Aufgabenplanung öffnen.
- Aufgabe erstellen auswählen.
- Einen Namen vergeben, beispielsweise
WinSCP FTP Synchronisierung. - Unter Trigger einen Zeitplan festlegen, beispielsweise täglich um 18:00 Uhr.
- Unter Aktionen die Aktion Programm starten auswählen.
- Als Programm die Datei
C:\Scripts\ftp-sync-to-local.bateintragen. - Unter Bedingungen und Einstellungen gegebenenfalls weitere Vorgaben festlegen.
- Die Aufgabe speichern.
Für die Ausführung ohne aktive Benutzeranmeldung kann die entsprechende Option in den allgemeinen Aufgabeneinstellungen aktiviert werden.
Dabei ist darauf zu achten, dass die verwendete WinSCP-Sitzung und alle erforderlichen Anmeldeinformationen auch im Ausführungskontext der Aufgabe verfügbar sind.
Empfehlung: Die Aufgabe zunächst manuell über die Aufgabenplanung starten und anschließend das Ausführungsergebnis sowie die WinSCP-Protokolldatei kontrollieren.
8. Fehlerbehebung
Wenn die automatische Synchronisierung nicht funktioniert, sollten folgende Punkte überprüft werden.
WinSCP wird nicht gefunden
Der Installationspfad in der Batch-Datei ist möglicherweise falsch. Prüfen, ob WinSCP.com am angegebenen Speicherort vorhanden ist.
Verbindung funktioniert manuell, aber nicht über die Aufgabenplanung
Die Aufgabe wird möglicherweise unter einem anderen Windows-Benutzer ausgeführt. Gespeicherte Sitzungen, SSH-Schlüssel oder andere Einstellungen sind dann eventuell nicht verfügbar.
Hostkey-Fehler bei SFTP
Der SSH-Hostkey ist nicht hinterlegt oder stimmt nicht mit dem erwarteten Fingerabdruck überein. In diesem Fall muss die Serveridentität überprüft werden. Eine ungeprüfte Übernahme eines neuen Hostkeys sollte vermieden werden.
Dateien werden nicht aktualisiert
Das Synchronisationsverhalten und die Vergleichskriterien prüfen. Gegebenenfalls wird eine Datei aufgrund ihres Änderungsdatums nicht erneut übertragen.
Synchronisierung wird mit Fehlercode 1 beendet
Die Protokolldatei auswerten. Häufige Ursachen sind Verbindungsprobleme, fehlende Berechtigungen oder nicht vorhandene Verzeichnisse.
9. Sicherheit und Datensicherung
Bei automatisierten Dateiübertragungen sollten einige grundlegende Sicherheitsmaßnahmen berücksichtigt werden.
- Nach Möglichkeit verschlüsselte Übertragungsprotokolle verwenden.
- Zugangsdaten und private SSH-Schlüssel vor unbefugtem Zugriff schützen.
- Für die Synchronisierung ein eigenes Benutzerkonto mit möglichst eingeschränkten Berechtigungen verwenden.
- Skriptdateien und Protokolle nur für berechtigte Benutzer zugänglich machen.
- Die erfolgreiche Ausführung regelmäßig kontrollieren.
- Vor Verwendung des Parameters
-deleteeine separate Datensicherung vorhalten.
Eine Synchronisierung ist keine vollständige Datensicherung. Werden Dateien auf dem Server versehentlich verändert oder gelöscht, können diese Änderungen bei einer entsprechenden Synchronisationskonfiguration auch lokal übernommen werden.
10. Fazit
Mit WinSCP lassen sich regelmäßige Dateiübertragungen von einem FTP- oder SFTP-Server auf einen lokalen Windows-PC mit wenigen Schritten automatisieren.
Die Kombination aus einer WinSCP-Skriptdatei, einer Batch-Datei und der Windows-Aufgabenplanung ist insbesondere für einfache, wiederkehrende Übertragungen geeignet.
Durch die zusätzliche Protokollierung und Fehlerauswertung lassen sich Probleme leichter erkennen und beheben.
Für umfangreichere Automatisierungen mit komplexen Bedingungen oder weiterführender Fehlerbehandlung bietet WinSCP zusätzlich eine .NET-Schnittstelle, die beispielsweise über PowerShell verwendet werden kann.
11. Quellen
- WinSCP – Offizielle Website und Download
- WinSCP – Scripting and Task Automation
- WinSCP – Synchronize Command
- WinSCP – Automate File Transfers
- WinSCP – Generate Session URL/Code
- WinSCP – Automate file transfers (or synchronization) to FTP server or SFTP server
- WinSCP – Generate Session URL/Code/Transfer Code Dialog
- youtbe.com – SFTP – Windows Script to Automate Synchronize Remote to Local Directory using WinSCP
