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.
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
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.
Danke für die Info :-)
Das ist natürlich noch einfacher und ich habe den Artikel eben angepasst