it-swarm.com.de

Gibt es eine Methode, um einen Prozentsatz für eine DD unter Linux zu erhalten?

Also hier ist was passiert.

Ich habe eine Sicherung eines Laufwerks auf meinem Server über einen Linux-Live-USB-Stick gestartet. Ich begann das erste Laufwerk mit dem Befehl dd Vanilla zu kopieren. Nur Sudo dd if=/dev/sda of=/dev/sdc1 und dann fiel mir ein, dass die Konsole leer bleibt, bis sie fertig ist.

Ich musste ohnehin ein anderes Backup auf demselben Laufwerk ausführen, also habe ich dieses auch mit Sudo dd if=/dev/sdb of=/dev/sdc3 status=progress gestartet und dann eine Textzeile mit der aktuellen Übertragungsrate und dem Fortschritt in Byte angezeigt.

Ich hoffte auf eine Methode, die einen Prozentsatz der Sicherung anzeigt, anstatt zu berechnen, wie viele Bytes von 1,8 TB gesichert wurden. Gibt es einen einfacheren Weg als status = progress?

43
user865814

Siehe Antworten auf diese Frage [ 1 ]

pv

Zum Beispiel können Sie pv verwenden, bevor Sie beginnen

Sudo apt-get install pv    # if you do not have it
pv < /dev/sda > /dev/sc3   # it is reported to be faster
pv /dev/sda > /dev/sc3     # it seems to have the same speed of the previous one
#or 
Sudo dd if=/dev/sda | pv -s 1844G | dd of=/dev/sdc3  # Maybe slower 

Ausgabe [ 2 ]:

440MB 0:00:38 [11.6MB/s] [======>                             ] 21% ETA 0:02:19

Anmerkungen:
Insbesondere bei großen Dateien möchten Sie möglicherweise man dd anzeigen und die Optionen festlegen, die für die Beschleunigung Ihrer gesamten Hardware erforderlich sind, z. bs=100M zum Einstellen des Puffers, oflag=sync zum Zählen der effektiven geschriebenen Bytes, möglicherweise direct...
Die Option -s akzeptiert nur ganzzahlige Parameter, also 1.8T-->1844G.
Wie Sie an den ersten Zeilen erkennen können, brauchen Sie dd überhaupt nicht.


kill -USR1 pid

Wenn Sie den Befehl dd bereits gestartet haben , haben Sie die PID (Ctrl-Z + bg und Sie lesen es oder pgrep ^dd ...) Sie können ein Signal senden USR1 (oder SIGUSR1 oder SIGINFO siehe unten) und die Ausgabe lesen.
Wenn die PID des Programms 1234 mit ist

kill -USR1 1234

dd antwortet auf dem Terminal seines STDERR mit etwas ähnlichem wie

4+1 records in
4+0 records out
41943040 bytes (42 MB) copied, 2.90588 s, 14.4 MB/s

Warnung: Unter OpenBSD müssen Sie möglicherweise das Verhalten von kill im Voraus überprüfen.[]: stattdessen verwenden
kill -SIGINFO 1234.
Es existiert die Signatur SIGINFO. Der SIGUSR1 sollte in diesem Fall das Programm (dd) beenden ...
Verwenden Sie unter Ubuntu -SIGUSR1 (10).

69
Hastur

Mein Werkzeug für diese Art von Sachen ist progress :

Dieses Tool kann als Tiny , Dirty, Linux- und OSX-Only C-Befehl beschrieben werden, der nach Coreutils-Grundbefehlen sucht (cp, mv, dd, tar, gzip/gunzip, cat usw.). Wird derzeit auf Ihrem System ausgeführt und zeigt den Prozentsatz der kopierten Daten an. Es kann auch geschätzte Zeit und Durchsatz anzeigen und bietet einen "top-like" -Modus (Überwachung).

 "<code>progress</code> in action" screenshot

Es scannt einfach /proc nach interessanten Befehlen und durchsucht dann die Verzeichnisse fd und fdinfo, um geöffnete Dateien zu finden und Positionen zu suchen, und meldet den Status für die größte Datei.

Es ist sehr leicht und mit praktisch jedem Befehl kompatibel.

Ich finde es besonders nützlich, weil:

  • im Vergleich zu pv in pipe oder dcfldd muss ich nicht daran denken, einen anderen Befehl auszuführen, wenn ich die Operation starte. Ich kann Dinge nachträglich überwachen.
  • im Vergleich zu kill -USR1 funktioniert es mit praktisch jedem Befehl. Ich muss die Manpage nicht immer noch einmal überprüfen, um sicherzustellen, dass ich die Kopie nicht versehentlich abbringe. Es ist auch schön, dass beim Aufrufen ohne Parameter der Fortschritt für alle gängigen "Datenübertragungs" -Befehle angezeigt wird, die gerade ausgeführt werden, sodass ich nicht einmal die PID nachschlagen muss.
  • im Vergleich zu pv -d muss ich die PID nicht nachschlagen.
37
Matteo Italia

Führen Sie dd aus und rufen Sie dann in einer separaten Shell den folgenden Befehl auf:

pv -d $(pidof dd) # root may be required

Dadurch erhält pv Statistiken über alle geöffneten Dateideskriptoren des dd-Prozesses. Es zeigt Ihnen beide, wo sich der Lese- und Schreibpuffer befindet.

24
sleblanc

Es gibt eine Alternative zu dd: dcfldd.

dcfldd ist eine erweiterte Version von GNU dd mit Funktionen, die für die Forensik und Sicherheit nützlich sind.

Statusausgabe - dcfldd kann den Benutzer über den Fortschritt in Bezug auf die übertragene Datenmenge und die Dauer des Vorgangs auf dem Laufenden halten.

dcfldd if=/dev/zero of=out bs=2G count=1 # test file
dcfldd if=out of=out2 sizeprobe=if
[80% of 2047Mb] 52736 blocks (1648Mb) written. 00:00:01 remaining.

http://dcfldd.sourceforge.net/
https://linux.die.net/man/1/dcfldd

9
Antonin Décimo

Als Prozentsatz müssten Sie ein bisschen rechnen, aber Sie können den Fortschritt eines DDS in einer für Menschen lesbaren Form erhalten, selbst nachdem Sie bereits damit begonnen haben, indem Sie kill -USR1 $(pidof dd) ausführen.

Der aktuelle dd-Prozess wird folgendermaßen angezeigt:

11117279 Bytes (11 MB, 11 MiB) kopiert, 13,715 s, 811 kB/s

7
Sirex