Per FTP mit Windows-Bordmitteln Unterverzeichnisse übertragen (rekursives FTP)
Was unter Linux kein Problem ist, stellt mit Windows-Bordmitteln eine nicht zu erreichende Hürde da: der Transfer von Ordnerstrukturen mit Hilfe des Kommandozeilen-Tools FTP (auch rekursives FTP genannt). Der eine oder andere Admin wird jetzt erstaunt sein, dass dies auch mit Batchdateien und FTP.EXE möglich ist. Dazu ist allerdings einiges an Batch-Know-How erforderlich.
Batchdatei 1 (rftp.bat):
@echo off
rem ************************************************************
rem * Batchdatei zum rekursiven Übertragen von Dateien per FTP *
rem * Adminbox.de, Version 08.12.09 *
rem ************************************************************
rem Verzeichnisliste erstellen...
mkdir c:\temp >nul
rem Aufbau des FTP-Skriptes...
echo open SERVER-IP >c:\temp\ftp.skr
echo USER>>c:\temp\ftp.skr
echo PASS>>c:\temp\ftp.skr
echo prompt >>c:\temp\ftp.skr
echo bin >>c:\temp\ftp.skr
for /F %%I IN ('dir /b /s /ad') DO call c:\scripts\rftp_lib.bat %%I\* %%~pI%%~nI
echo quit >>c:\temp\ftp.skr
rem FTP-Verbindung aufbauen...
ftp -s:C:\temp\ftp.skr
Batchdatei 2 (rftp_lib.bat):
@echo off
rem *** Hilfsbatch für rftp.bat
set rftp=%2
set rftp=%rftp:~1%
echo mkdir %rftp% >>c:\temp\ftp.skr
echo cd %rftp% >>c:\temp\ftp.skr
echo mput %1 >>c:\temp\ftp.skr
echo cd \>>c:\temp\ftp.skr
Wie funktionieren diese Batchdateien?
Zunächst wird durch die RFTP.BAT ein temporärer Ordner C:\TEMP erstellt. Ist dieser bereits vorhanden, kommt es zu einer Fehlermeldung, die getrost ignoriert werden kann (wer es eleganter mag, kann hier eine Überprüfung auf C:\TEMP\NUL durchführen,