Linux pipe Bandbreite limitieren und Status/Speed anzeigen

Ich wollte heute mit dd und ssh ein block device von Server-1 nach Server-2 kopieren. Dabei wollte ich zum einen die Bandbreite über die ssh Verbindung auf 100Mbit/s limitieren und zum anderen kontinuierlich den Status beobachten.

Dabei zeigte sich pv als brauchbares Tool und genau das Werkzeug das ich brauche.

Die fertige Zeile sieht so aus:

dd if=/dev/System/lv1 bs=4M | pv -s 100g -L 12m | ssh root@ip 'dd of=/dev/System/lv2 bs=4M'
pv -s 100g -L 12m # <= Das Block Device ist 100GB groß, was pv wissen muss um die Progressbar darstellen zu können. 12,5 MB/s entspricht 100Mbit/s. Da pv nur Integer möchte, nehme ich 12m

Das ganze funktioniert natürlich auch zusammen mit tar, gzip oder nc. Genial für alle Programme die diese Funktionen nicht mitbringen.

3 Gedanken zu „Linux pipe Bandbreite limitieren und Status/Speed anzeigen“

  1. Hallo,

    Der Pipe-Viewer (pv) hat doch schon eine integrierte Bandbreitenlimitierung mit dem Parameter -L.

    -L RATE, –rate-limit RATE
    Limit the transfer to a maximum of RATE bytes per second. A suffix of „k“, „m“, „g“, or „t“ can be
    added to denote kilobytes (*1024), megabytes, and so on.

    Folgende Beispiele begrenzen den Durchsatz auf 13 MB/s.

    dd if=/dev/System/lv1 bs=4M | pv -L 13m | ssh root@ip ‚dd of=/dev/System/lv2 bs=4M‘
    pv -petrab -L 13m /dev/null

  2. Komisch, beim 2. Beispiel mag er die „größer als“- und „kleiner als“-Zeichen nicht…
    Ich wollte /dev/zero einlesen und nach /dev/null ausgeben.

  3. Danke für die Info :-)
    Das ist natürlich noch einfacher und ich habe den Artikel eben angepasst

Schreibe einen Kommentar