Ich versuche, ungefähr 100.000 Dateien mit einer Gesamtgröße von 90 GB zu übertragen. Im Moment verwende ich den rsync-Daemon, aber er ist langsam mit 3,4 MB / s und ich muss dies einige Male tun. Ich frage mich, welche Optionen ich habe, um eine 100-MBit-Verbindung über das Internet zu maximieren und sehr zuverlässig zu sein.
rsync
file-transfer
inkognito2
quelle
quelle
Antworten:
Hast du über Sneakernet nachgedacht ? Bei großen Datenmengen ist der Versand über Nacht oft schneller und billiger als die Übertragung über das Internet.
quelle
Wie? Oder TL; DR
Die schnellste Methode , die ich gefunden habe , ist eine Kombination aus
tar
,mbuffer
undssh
.Z.B:
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
mbuffer
oderbuffer
. Sie sind weitgehend ähnlich, haben abermbuffer
einige Vorteile. Die Standardpuffergröße beträgt 2 MB fürmbuffer
und 1 MB fürbuffer
. 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}?buffer
Plus 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,
tar
um sie zu einem einzigen Datenstrom zusammenzufassen. Wenn es sich um eine einzelne Datei handelt, können Sie einecat
E / A-Umleitung verwenden. Der Overhead vontar
vs.cat
ist statistisch unbedeutend, daher verwende ich immertar
(oderzfs -send
wo ich kann), es sei denn, es ist bereits ein Tarball . Keines von diesen liefert garantiert Metadaten (und wird dies insbesonderecat
nicht tun). Wenn Sie Metadaten möchten, lasse ich das als Übung für Sie.Schließlich ist die Verwendung
ssh
für einen Transportmechanismus sowohl sicher als auch mit sehr geringem Aufwand verbunden. Auch hier ist der Overhead vonssh
vs.nc
statistisch nicht signifikant.quelle
tar -cf - .|mbuffer -m128k -s 256M -I 9090 & mbuffer -m128k -s 256M -O host:9090 | tar -xf -
ssh
macht das einfach. Mitstunnel
,socat
oderopenssl
funktioniert auch, aber sie sind komplexer für einfachen Transfer einzurichten.Sie erwähnen "rsync", also gehe ich davon aus, dass Sie Linux verwenden:
Warum erstellen Sie keine tar- oder tar.gz-Datei? Die Netzwerkübertragungszeit einer großen Datei ist schneller als bei vielen kleinen. Sie können es sogar komprimieren, wenn Sie möchten ...
Teer ohne Kompression:
Auf dem Quellserver:
Dann auf der Empfangsseite:
Teer mit Kompression:
Auf dem Quellserver:
Dann auf der Empfangsseite:
Sie würden einfach rsync verwenden, um die eigentliche Übertragung der (tar | tar.gz) -Dateien durchzuführen.
quelle
Sie könnten versuchen , die
tar
undssh
Trick beschrieben hier :Dies sollte wie folgt umschreibbar sein :
Sie würden jedoch die
--partial
Funktionen von dabei verlierenrsync
. Wenn sich die Dateien nicht sehr häufig ändern, kannrsync
es sich sehr lohnen , mit einer langsamen Initiale zu leben, da dies in Zukunft viel schneller gehen wird.quelle
Sie können verschiedene Komprimierungsoptionen von rsync verwenden.
Das Komprimierungsverhältnis für Binärdateien ist sehr niedrig, daher können Sie diese Dateien mit --skip-compress überspringen, z. B. ISO, bereits archivierte und komprimierte Tarballs usw.
quelle
Ich bin ein großer Fan von SFTP. Ich verwende SFTP, um Medien von meinem Hauptcomputer auf meinen Server zu übertragen. Ich bekomme gute Geschwindigkeiten über LAN.
SFTP ist zuverlässig, ich würde es versuchen, da es einfach einzurichten ist und in einigen Fällen schneller sein kann.
quelle