Ich musste eine 20-GB- KVM- vdisk-Datei, in der das Root-Dateisystem einer CentOS 6.5-VM gespeichert war, von einem Laborserver auf einen anderen übertragen. Die große Dateigröße und die Tatsache, dass ich eine solche vdisk-Datei einmal auf einige hundert Megabyte komprimiert hatte, ließen mich instinktiv die Komprimierung aktivieren, scp
aber ich war überrascht, eine ziemlich niedrige Übertragungsgeschwindigkeit zu sehen. Dann habe ich es bzip2
in Kombination mit ssh
und versucht cat
und war erschrocken. Hier ist die Zusammenfassung der Methoden und des durchschnittlichen Durchsatzes.
scp -C vm1-root.img root@192.168.161.62:/mnt/vdisks/
11 MB / s.bzip2 -c vm1-root.img | ssh -l root 192.168.161.62 "bzip2 -d -c > /mnt/vdisks/vm1-root.img"
5 MB / s. Dieses noch niedrigere Ergebnis führte zur Suche im Internet.scp -c arcfour -C vm1-root.img root@192.168.161.62:/mnt/vdisks/
13 MB / s. Diese Verwendung von-c arcfour
as wurde in einer Antwort auf Serverfehler vorgeschlagen. Es hat kaum geholfen. Schließlich habe ich die Komprimierung deaktiviert.scp vm1-root.img root@192.168.161.62:/mnt/vdisks/
23 MB / s.
Sollte die Komprimierung nicht schneller gewesen sein?
EDIT: Ich weiß nicht, warum die Frage abgelehnt wurde. Ich dachte, hier gibt es etwas zu lernen.
Nachdem ssh(1)
ich den Manpage-Tipp von @sven erhalten hatte, versuchte ich einige alternative Methoden der Dateiübertragung ohne Komprimierung, beide mit besseren Ergebnissen.
cat vm1-root.img | ssh -l root 192.168.161.62 "cat > /mnt/vdisks/vm1-root.img"
26 MB / s.nc -l 5678 > /mnt/vdisks/vm1-root.img
am Empfänger undnc 192.168.161.62 5678 < vm1-root.img
am Sender 40 MB / s. Der Port5678
ist ein beliebiger, der verfügbar war.
Die Verwendung nc
erwies sich als die schnellste Kopiermethode!
In der Vergangenheit scp -C
hat es sehr gut funktioniert, wann immer ich dachte. Zum Beispiel beim Übertragen von Syslogs ( /var/log/messages*
) mit wenigen GB Größe. Eine unkomprimierte Übertragungsrate von einigen hundert KB / s würde sich auf 1-2 MB / s erhöhen. Dieses Beispiel fällt bei einer langsamen Verbindung, wie in der Manpage erwähnt.
Ich habe einen Fall, in dem ein neu erstelltes vdisk-Image für eine 20-GB-Partition eine komprimierte Größe von nur 200 MB hat. Mit einer Übertragungsrate von ca. 25 MB / s können wir das Kopieren in nur 8 Sekunden statt über 13 Minuten durchführen! scp
Ohne Komprimierung ist dies in diesem Fall eindeutig ineffizient und scp -C
sogar noch schlimmer.
Ich denke, die wichtigste Lektion, scp -C
die wir hier gelernt haben, ist, dass dies nur als Annehmlichkeit betrachtet werden sollte. Wenn eine Datei erheblich komprimiert werden kann, ist es besser, sie zuerst auf der Quelle zu komprimieren, das komprimierte Formular zu übertragen und schließlich auf dem Ziel zu komprimieren. Tools, die die Komprimierung und Dekomprimierung schnell durchführen (z. B. pbzip2 ), sind eine größere Hilfe.