Ich muss eine große Datei (1 GB) herunterladen. Ich habe auch Zugriff auf mehrere Computer, auf denen Linux ausgeführt wird, aber jeder Computer ist durch eine Administratorrichtlinie auf eine Download-Geschwindigkeit von 50 KB / s beschränkt.
Wie verteile ich das Herunterladen dieser Datei auf mehrere Computer und füge sie zusammen, nachdem alle Segmente heruntergeladen wurden, damit ich sie schneller empfangen kann?
download
cluster
parallelism
Meysam
quelle
quelle
Antworten:
Die gängigen Protokolle HTTP, FTP und SFTP unterstützen Bereichsanforderungen , sodass Sie einen Teil einer Datei anfordern können. Beachten Sie, dass dies auch Serverunterstützung erfordert, sodass dies in der Praxis möglicherweise nicht funktioniert.
Sie können
curl
und die Option-r
oder verwenden--range
, um den Bereich anzugeben und schließlich nurcat
die Dateien zusammenzufassen. Beispiel:Und schließlich, wenn Sie die einzelnen Teile gesammelt haben, verknüpfen Sie sie:
Sie können weitere Informationen über die Datei erhalten, einschließlich ihrer Größe mit der
--head
Option:Sie können den letzten Block mit einem offenen Bereich abrufen:
Weitere Optionen und Erklärungen finden Sie auf der Curl-Manpage .
Sie können ssh und tmux weiter nutzen, um das Ausführen und Verfolgen der Downloads auf mehreren Servern zu vereinfachen.
quelle
cat distro* > ...
check könnte die Sortierung der Dateien, wie*
von Ihrer Shell erweitert, so aussehen:distro1.iso distro10.iso distro11.iso ...
und somit in der falschen Reihenfolge verketten.cat distro{1..10}.iso
cat $(seq -fdist%g.iso 1 10)
sollte vorhersehbarer sein, scheitertcsh
aber. Das Ersetzen$(…)
durch Backtics scheint in den meisten Shells zu funktionieren.seq
ist auch kein portierbarer Befehl. You can usedistro001.iso
,distro002.iso
...distroy010.iso
Das Laden einer 1-Gigabyte-Datei mit 50 Kilobyte pro Sekunde würde ungefähr 5,5 Stunden dauern.
Es scheint, dass der Aufwand, mehrere Computer zu koordinieren, um Teilergebnisse zu erhalten, einige Zeit sparen kann.
Sie können sich Bittorrent ansehen und Web-Seeding zusammen mit Übertragungen über Peer Exchange nutzen. Jeder Client kann Teile empfangen und fertige Teile mit im lokalen Netzwerk (LAN) teilen. Sie haben auf jedem Computer dieselbe 1-GB-Datei, aber das Zusammenführen von Teilen ist für Sie automatisiert.
quelle