
Gibt es ein Befehlszeilentool, das sowohl mehrere gleichzeitige Verbindungen als auch mehrere Netzwerkprotokolle (FTP, HTTP usw.) unterstützt?
Hier ist ein praktisches Beispiel:
Ich habe eine große Sicherungsdatei auf einem SSH-Server, die ich auf meinen aktuellen Rechner übertragen möchte. Der Dateidownload dauert zu lange, daher möchte ich mehrere gleichzeitige Netzwerkverbindungen verwenden, um ihn zu beschleunigen. Gehen wir davon aus, dass der SSH-Server nicht stark ausgelastet ist.
Downloads vonmehrere Dateien/URLsDie Verwendung gleichzeitiger Verbindungen istnicht relevantauf diese Frage.
Ich möchte keinen Code schreiben müssen, um dieses Problem zu lösen.
Antwort1
DerlftpDas Programm kann sowohl mehrere Netzwerkprotokolle als auch gleichzeitige Verbindungen verarbeiten.
Protokollunterstützung:
Lftp unterstützt die folgenden Protokolle:
- ftp
- sftp
- http und https
- BitTorrent
Weitere Informationen zu FTPs etc.Hier.
Parallele Downloads:
So laden Sie eine einzelne große Datei herunter, die sich unter befindet, und <URI>
verwenden dabei zwei gleichzeitige Verbindungen:
lftp -c "pget -c -n 2 <URI>"
Die erste -c
Option gibt die auszuführenden Befehle an. pget
richtet eine Dateiübertragung über mehrere parallele Verbindungen ein. Die zweite -c
Option bedeutet, die Übertragung fortzusetzen, wenn diese zuvor unterbrochen wurde. Die -n
Option begrenzt die maximale Anzahl der zu verwendenden Verbindungen.
Weitere Informationen zu Befehlen und Optionen finden Sie im Online-manpage.
Warnung:Dies kann die Übertragung beschleunigen, belastet jedoch das Netzwerk und die Server stark. Die Beschleunigung hängt von den Netzwerk- und Serverbedingungen ab.
Um auf das praktische Beispiel in der Frage einzugehen:
lftp -c "pget -c -n 2 sftp://[email protected]/~/backups/large.tar.gz"
In diesem Beispiel wird eine große Sicherungsdatei über SSH (SFTP) mit zwei gleichzeitigen Verbindungen heruntergeladen. Dabei wird davon ausgegangen, dass Sie eine passwortlose SSH-Anmeldung eingerichtet haben.
Hinweis: Lftp kann auch im interaktiven Modus verwendet werden; ähnlich wie andere FTP-Befehle.
Antwort2
aria2
unterstützt mehrere Verbindungen und FTP, HTTP und SFTP (unter anderem).
Zum Beispiel:
aria2c -j ${num_concurrent} "${uri}"
Ich möchte mehrere gleichzeitige Netzwerkverbindungen nutzen, um es zu beschleunigen
Sofern der Server nicht so konfiguriert ist, dass er einzelne Verbindungen drosselt, ist das Ausführen mehrerer paralleler Downloads möglicherweise nutzlos. Es kann sich sogar negativ auf Ihren Durchsatz auswirken.
Die Verwendung von Standardwerkzeugen (z. B. rsync
, scp
, curl
) wirdtypischerweisegeben Ihnen, wonach Sie suchen.
Wenn Verbindungsabbrüche/teilweise Übertragungen ein Problem darstellen, kann ein Dienstprogramm wie dieses hilfreich sein. Beachten Sie jedoch, dass dies rsync --partial
auch hilfreich sein kann.