Saturday, December 29, 2007

Net::FTP unter Windows

Net::FTP ist ein ganz praktisches Modul, um mit Perl Dateien von einem FTP-Server zu holen. Ich habe mir mit WWW::ConfixxBackup ein kleines Skript geschrieben, mit dem ich Webseiten über Confixx sichern und die Archive runterladen kann. Das ist ganz praktisch wenn man kein Shell-Zugriff auf den Server hat (was ja meistens bei Shared Webhosting der Fall ist).

Ich habe das Ganze unter Linux entwickelt und getestet - funktioniert einwandfrei. Unter Windows scheint auch alles gut zu funktionieren. Aber der Schein trügt: Wenn ich die .tar.gz-Dateien öffne, kommt gleich eine Fehlermeldung dass der CRC nicht stimmt.

Ich hatte ziemlich schnell den Übertragungsmodus in Verdacht, denn wenn man .tar.gz als ASCII überträgt, ist das nicht besonders geschickt! In der Doku zu Net::FTP habe ich dann die Methode binary entdeckt. In das Programm eingebunden und siehe da, es klappt - immer noch nicht :-(

Dank der Debug-Option von Net::FTP habe ich herausgefunden, dass die Dateien immer noch in ASCII übertragen werden. Mmmhh...

Nach ein wenig rumprobieren habe ich das $ftp->binary innerhalb der Schleife, die die Dateien herunterlädt, geschrieben und dann hat es funktioniert... In der Doku war aber nix zu finden, dass man das binary für jede einzelne Datei gesetzt werden muss. Oder ist das mal wieder ein Windows-Problem?

Egal, ich werde demnächst eine .exe des Programms zur Verfügung stellen.

No comments: