2016-04-16 29 views
0

Das Problem: Ich versuche, einen lokalen Spiegel einer öffentlichen FTP-Site zu erstellen. Wenn ich lftp verwende, um den Job zu machen, erstellt es einen Spiegel ohne ein Problem, aber wenn ich versuche, den Spiegel ein paar Tage später zu aktualisieren, wird es sehr langsam, weil ich auf mehreren Dateien feststecke.Force Lftp binäre Verbindungen zu öffnen?

Lauf lftp -d kann ich sehen, dass lftp mehrere Anfragen an RETR die Datei macht, aber diese Anforderungen führen in mehreren **** Timeout - reconnecting Meldungen und nach ca. 2-3 Minuten, die ich sehen

< --- 150 Opening BINARY-Modus Datenverbindung für {filename removed} .`

Nach diesem letzten Befehl wird die Datei erfolgreich heruntergeladen und lftp läuft weiter.

Aus dem Handbuch verstehe ich, dass BINARY der Standardmodus für lftp ist, aber irgendwie scheint es nicht für die frühen Anfragen zu arbeiten. Kann jemand vorschlagen, wie ich LFTP zwingen kann, BINARY Modusdatenverbindung immer zu öffnen, um alle Akten herunterzuladen?

Hier ist ein MWE:

``lftp -d -u anonymous,anonymous -c "open {url}; get {file}"`` 

Und Antwort von lftp -d:

---- Connecting to {url} ({IP}) port 21 
<--- 220 (vsFTPd 3.0.3)       
---> FEAT 
<--- 211-Features:          
<--- EPRT 
<--- EPSV 
<--- MDTM 
<--- PASV 
<--- REST STREAM 
<--- SIZE 
<--- TVFS 
<--- 211 End 
---> USER anonymous 
<--- 331 Please specify the password.    
---> PASS anonymous 
<--- 230 Login successful.          
---> TYPE I 
<--- 200 Switching to Binary mode.       
---> SIZE {file} 
<--- 213 3321            
---> MDTM {file} 
--- 213 20160318190446           
---> PASV 
<--- 227 Entering Passive Mode ({IP}).   
---- Connecting data socket to ({IP}) port 55380 
---- Data connection established         
---> RETR {file} 
**** Timeout - reconnecting          
---- Closing data socket 
---- Closing control socket 

Antwort

2

lftp verwendet standardmäßig den binären Modus für alle Dateiübertragungen und den ASCII-Modus für Verzeichnislisten. Also sollte der binäre Modus hier kein Problem darstellen.

Vielleicht haben Sie ein subtiles Verbindungsproblem, manchmal Net: Socket-Maxseg auf einen niedrigeren Wert (z. B. 500) hilft hilft.

+0

Ich habe die Einstellung, die Sie vorgeschlagen haben, nicht versucht, weil die Verwendung von '--ignore-time' mein Problem gelöst hat. Ich habe Ihre Antwort akzeptiert, da Sie klargestellt haben, dass der binäre Modus immer verwendet wird. – econ

0

Der FTP-Befehl für Binär-Modus ist bin so dass der Befehl verwenden, bevor Sie get die Datei.

cd /direc/tory; bin; get file.xml 

Das Problem ist, dass ich

---> TYPE I 
<--- 200 Switching to Binary mode.       

in Ihrer Ausgabe zu sehen, so dass Sie bereits im Binär-Modus. Ich frage mich, ob Sie ein anderes Problem haben? Ich sehe auch, dass Sie passiven Modus verwenden (PASV), und das ist gut, weil passive um Firewalls und NATs [1] arbeitet, so brauchen wir einen anderen Grund, warum Sie diese Timeouts sehen.

Haben Sie weitere Hinweise, vielleicht von ping oder netstat?

+0

Ich fange an zu vermuten, dass ich vom Server gedrosselt werde ... der Grund dafür ist, dass das Öffnen von Dateien auf dem FTP-Server (z. B. via LYNX) sehr langsam wird. – econ

+0

Aber seltsamerweise, wenn ich lftp abbringe und starte, beginnt es vom allerersten Ordner und lädt Dateien, die es bereits aktualisiert hat, von der abgebrochenen Sitzung herunter (ohne irgendwelche Fehler oder Verzögerungen) ... also bin ich mir nicht sicher was daraus machen. – econ

+0

Auch ich bekomme: Unbekannte Befehl 'bin '. – econ