Ich muss ein Verzeichnis mit einem ziemlich komplizierten Baum (viele Unterverzeichnisse usw.) per FTP hochladen. Ich kann dieses Verzeichnis nicht komprimieren, da ich außer FTP keinen Zugriff auf das Ziel habe - z. B. keinen Tar. Da dies über eine sehr lange Distanz (USA => Australien) erfolgt, ist die Latenz ziemlich hoch.
Im Anschluss an die Beratung in Wie FTP mehrere Ordner auf einem anderen Server mit mput in Unix? Ich verwende derzeit ncftp
, um die Übertragung mit durchzuführen mput -r
. Leider scheint dies jeweils nur eine Datei zu übertragen, wodurch ein Großteil der verfügbaren Bandbreite für den Kommunikationsaufwand verschwendet wird.
Gibt es eine Möglichkeit, diesen Prozess zu parallelisieren, dh mehrere Dateien gleichzeitig aus diesem Verzeichnis hochzuladen? Natürlich könnte ich es manuell teilen und mput -r
auf jedem Block ausführen , aber das ist ein langwieriger Prozess.
Eine CLI-Methode wird stark bevorzugt, da der Client-Computer tatsächlich ein Headless-Server ist, auf den über SSH zugegriffen wird.
rsync
eine Option? bearbeiten anscheinend nicht, da es nicht über ftp funktioniert. Es könnte sich lohnen, den Zielserver-Administrator zu fragen, ob er bereit ist, Ihnensftp
Zugriff zu gewähren. Sie könnten sich nicht anmelden,rsync
würden aber funktionieren.Antworten:
lftp würde dies mit dem Befehl tun
mirror -R -P 20 localpath
- Spiegelsynchronisation zwischen Standorten, und -R verwendet den Remote-Server als Ziel, wobei P 20 parallele Übertragungen gleichzeitig ausführt.Wie erklärt in
man lftp
:quelle
Sie können versuchen, gnu parallel und curl zu verwenden, um es zu automatisieren.
dann könnten Sie etwas tun wie:
Dadurch werden 4 Jobs pro CPU ausgeführt, wobei alle PDFs im Arbeitspfad hochgeladen werden.
quelle