FTP auf der Windows CMD-Shell mit ncftp

Dieser Artikel stellt den FTP-Client ncftp für die Kommandozeile vor. Ich selbst benutze ihn ausschließlich unter Windows auf der CMD-Shell, weil dem Windows-eigenen ftp.exe wichtige Features fehlen (z.B. Unterstützung für Passiven FTP-Modus). Der Entwickler stellt unter dem Namen ncftp sowohl einen kommerziellen FTP-Server als auch einen freien FTP-Client zur Verfügung, hier soll es ausschließlich um den Client gehen.

ncfpt ein FTP-Client für die Windows-Kommandozeile bzw. CMD-Shell
ncfpt ein FTP-Client für die Windows-Kommandozeile bzw. CMD-Shell

Warum sollte man ncftp nutzen?

Wer unter Windows Backups oder Datei-Uploads automatisieren möchte, kann das relativ einfach mit Hilfe von CMD-Skripten bzw. „Stapelverarbeitungsdateien“ tun. Wenn dabei Dateien per FTP kopiert werden sollen, kann man auch das mit dem Windows-eigenen Programm ftp.exe tun. Ein Nachteil ist dabei, dass die eigentlichen FTP-Kommandos in einer separaten Steuerungsdatei hinterlegt werden müssen, selbst wenn nur eine einzige Datei übertragen werden soll. Wenn der Dateiname dabei auch noch variabel ist (weil er z.B. eine Datum enthält), muss die Steuerungsdatei bei jedem Aufruf des Skriptes neu erzeugt werden. Das wiederum produziert einen ziemlichen Code-Overhead. Zweiter großer Nachteil von ftp.exe ist die fehlende Unterstützung für passives FTP. Spätestens wenn man hinter einer Firewall hängt, die Zugriffe von außen abblockt, muss man sich nach einem alternativen FTP-Client umschauen und meine Empfehlung wäre in dem Fall eben ncftp.

Wo gibt es ncftp und wie funktioniert es?

Der FTP-Client ncftp steht kostenlos auf der Website des Entwicklers zur Verfügung. Neben Windows gibt es auch zahlreichen anderen Versionen unter anderem für FreeBSD, Linux oder MacOS. Das Programm ncftp.exe lässt sich genauso wie das Windows-eigene ftp.exe als interaktiver FTP-Klient benutzen. ncftp wechselt nach dem Verbindungsaufbau automatisch in den passiven Modus, wenn das vom Server unterstützt wird. Wenn man dieses Verhalten ändern möchte, kann man über das Kommando passive die Unterstützung für passives FTP an- und wieder abschalten.

Viel interessanter als der interaktive Modus und für die Automatisierung auch viel nützlicher sind die beiden zusätzlichen Tools ncftpget und ncftpput.

FTP-Downloads automatisieren mit ncftpget

Mit Hilfe des Kommandozeilen-Tools ncftpget kann man Dateien oder auch ganze Verzeichnisse mit nur einem Kommando bzw. einer Zeile Code vom FTP-Server holen.

Der folgende Aufruf kopiert z.B. rekursiv das komplette Verzeichnis /download vom FTP-Server ftp.server.xy in das lokale Verzeichnis home:

ncftpget -u matthias -p geheim ftp.server.xy /home /download

FTP-Uploads automatisieren mit ncftpput

Ähnlich funktioniert der FTP-Upload mit dem Tool ncftpput. Der folgende Aufruf kopiert z.B. das lokale Verzeichnis /fotos auf den FTP-Server ftp.server.xy ins Verzeichnis /backup:

ncftpput -u matthias -p geheim
-R -S .part -m ftp.server.xy /backup /fotos

Interessant sind dabei die Optionen:

  • -R kopiert rekursiv den vollständigen Verzeichnisbaum
  • -S part sorgt dafür das unvollständig übertragene Dateien das Suffix part bekommen
  • -m sorgt dafür dass das Zielverzeichnis auf dem Server zunächst angelegt wird, wenn es noch nicht existiert.

Weitere Beispiele und die vollständige Übersicht der Parameter und Optionen finden man in der Programm-Hilfe oder in der Online-Dokumentation.

Schreibe einen Kommentar

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