Auf der Konsole klonen: dd beobachten – watch und killall bringen den gewünschten Effekt
Ich räume gerade meine Festplatte auf und um, beziehungsweise möchte ich einige ältere Platten – hmmm – konsolidieren, ja, so sagt man das heute.
Ich klone eine Festplatte mit 160 GByte auf meinen Rechner und möchte die Daten auf eine mit 250 GByte spielen. Aber alles 1:1 übernommen. Da die beiden Platten ohne Gehäuse sind und ich nur einen USB-Adapter habe, muss ich den Klonvorgang über ein Image bewerkstelligen. Das entsprechende Tool dafür ist bei einer Linux-Distribution vorhanden: dd
Image erstellen und komprimieren (dauert etwas länger, aber ich habe nicht mehr so viel Platz und die Platte ist auch nicht voll): dd if=/dev/sdb | gzip -c > ./image.img
Dem fortgeschrittenen Linuxer ist dieser Befehl natürlich bekannt. Das Abbild auf die andere Platte zurückspielen würde in etwa so aussehen: gunzip -c /image.img.gz | dd of=/dev/sdX
(wobei das X dafür steht, wie sich die zweite Platte am System meldet).
Das Blöde an dd ist, dass man nicht wirklich sieht, wie der Fortschritt ist. Wenn ich nun auf einer zweiten Konsole den Befehl watch -n 30 killall -USR1 dd
aufrufe und dann wieder zum Fenster mit dd wechsle, sehe ich alle 30 Sekunden, was sich so getan hat. Würde ich die 30 mit 60 ersetzen, wäre das eben minütlich.
Ich bekomme zwar keinen so schicken Fortschrittsbalken, der mich sowieso anlügt – aber mir reicht die Information vollkommen.
Das sollte doch mit pv schöner gehen, oder?
pv -tpreb | dd of=
"pv" und "pigz" sind auch klasse Helfer für sowas.
leider noch nicht in den gänigen Distributionen vorinstalliert und müssen nachgeladen werden.
pv zeigt eine Fortschrittsanzeige mit durchschnittlicher Übertragungsrate und verbleibender Zeit, bei angabe der Datenmenge.
dd if=/dev/sdb | pv -s 160G | pigz -c > ./image.img
pigz funktioniert adaptiv zu gzip nur das es mehrere Threads nutzt und so alle Prozessorkerne zum Einsatz kommen.
Hab so in letzter Zeit mehrere HDDs auf SSDs geklont.
Viele Grüße
Christian