rsync,ssh,tar und socat – Große Datenbestände kopieren

Manchmal muss es etwas schneller sein als sonst. Gerade wenn man mit einem zehn Jahre alten Datenbestand von einem Computer auf einen anderen umziehen möchte.

Wie ist dabei der Maximaldurchsatz zu erreichen?

Am Transfer großer Datenbestände sind in erster Linie zwei Komponenten zwangsweise beteiligt. Das Festplatten-Subsystem und das Netzwerk-Subsystem der zu synchronisierenden Computer.

Standardlösung

Da das Problem nicht neu ist und sich selbst in Lehrbüchern wiederfindet gibt es eine Standardlösung: rsync.

rsync -ar --stats --progress /home/meinBenutzer/*Ü meinBenutzer@neuerComputer:~/

Soll es mit rsync, dass auf SSH für den Transfer setzt, schneller gehen, passt man die Chiffre an. Das funktioniert durch die Option -e "ssh -c arcfour", die den RC4 Stromchiffre verwendet. Der Durchsatz steigt, aber erreicht aufgrund des Overheads der Verschlüsselung und der Integritätsprüfungen, die rsync bietet nicht Netzwerk- oder Festplatten-Maximaldurchsatz.

Mehr Power!

Der Maximaldurchsatz der Festplatte lässt sich erreichen, indem die lesenden und schreibenden Operationen sequentiell durchgeführt werden. Ein Programm, dass die Daten sequentiell liest ist tar. Indem man tar anweist, das erzeugte Archiv auf die Standardausgabe zu senden, kann es über das LAN transportiert werden. Um hierbei den Prozessor nicht einzuspannen, erfolgt die Übertragung unverschlüsselt und unkomprimiert mit socat.

Das geht wie folgt:

Auf dem Server (Empfänger)

socat tcp-listen:31337,rcvbuf=67108864,dontroute stdout | tar xvf - -C ./

Auf dem Client (Sender)

tar cvf - ./* | socat stdin tcp:192.168.my.ip:31337,sndbuf=67108864,dontroute

Erwähnenswert ist besonders die Option dontroute, durch die sichergestellt wird, dass der Datenverkehr der sensiblen privaten Daten nicht das lokale Netz verlässt. Mit den Optionen rcbuf und sndbuf werden die TCP-Puffer auf beiden Seiten vergrößert und das Auto-Tuning des Kernels umgangen.

Fazit

Durch die Vermeidung von Verschlüsselung, Komprimierung und der manuellen Vergrößerung der Sende- und Empfangspuffer sollte theoretisch jetzt der Maximaldurchsatz erreicht werden können. Bei einem sehr unwissenschaftlichen Test bestätigte sich die Vermutung, dass socat mit tar schneller ist.

Beim Kopieren von 560 Gigabyte von einem mit 170 MB/sec lokal gemessenen Software-RAID1 zu einem 411 MB/sec lokal gemessenen Software-RAID1 erreichte rsync einen Maximaldurchsatz von 340 MBit/sec, tar mit socat reizte die vollen 988 MBit/sec aus.

4 comments

  1. Ich glaub du hast einen kleinen Fehler, bei dem Befehl für den Client stimmt der Port nicht mit dem auf dem Server überein.
    Sonst danke für den Artikel. Funktioniert super!

  2. Pingback: Anonymous

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>