Wie? Oder TL; DR
Die schnellste Methode , die ich gefunden habe , ist eine Kombination aus tar, mbufferund ssh.
Z.B:
tar zcf - bigfile.m4p | mbuffer -s 1K -m 512 | ssh otherhost "tar zxf -"
Auf diese Weise habe ich dauerhafte lokale Netzwerkübertragungen über 950 Mbit / s auf 1-Gbit-Verbindungen erreicht. Ersetzen Sie die Pfade in jedem tar-Befehl so, dass sie für die Übertragung geeignet sind.
Warum? mbuffer!
Der größte Engpass bei der Übertragung großer Dateien über ein Netzwerk ist bei weitem die Festplatten-E / A. Die Antwort darauf lautet mbufferoder buffer. Sie sind weitgehend ähnlich, haben aber mbuffereinige Vorteile. Die Standardpuffergröße beträgt 2 MB für mbufferund 1 MB für buffer. Größere Puffer sind mit größerer Wahrscheinlichkeit niemals leer. Wenn Sie eine Blockgröße auswählen, die das niedrigste gemeinsame Vielfache der nativen Blockgröße sowohl im Ziel- als auch im Zieldateisystem ist, erzielen Sie die beste Leistung.
Buffering ist die Sache , die macht alle den Unterschied! Verwenden Sie es, wenn Sie es haben! Wenn Sie es nicht haben, holen Sie es sich! Mit (m}?bufferPlus alles ist besser als alles , was von selbst aus . Es ist fast buchstäblich ein Allheilmittel für langsame Netzwerk-Dateiübertragungen.
Wenn Sie mehrere Dateien übertragen, verwenden Sie diese, tarum sie zu einem einzigen Datenstrom zusammenzufassen. Wenn es sich um eine einzelne Datei handelt, können Sie eine catE / A-Umleitung verwenden. Der Overhead von tarvs. catist statistisch unbedeutend, daher verwende ich immer tar(oder zfs -sendwo ich kann), es sei denn, es ist bereits ein Tarball . Keines von diesen liefert garantiert Metadaten (und wird dies insbesondere catnicht tun). Wenn Sie Metadaten möchten, lasse ich das als Übung für Sie.
Schließlich ist die Verwendung sshfür einen Transportmechanismus sowohl sicher als auch mit sehr geringem Aufwand verbunden. Auch hier ist der Overhead von sshvs. ncstatistisch nicht signifikant.