• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Festplatte mit dd-bzip2-netcat klonen?

Hallo,

ich habe folgenden interessanten Beitrag gefunden:
http://schimana.net/2007/06/23/harddisk-clone-mit-dd-inkl-komprimierung-und-statusanzeige/

Bevor ich lange ausprobiere - kann das vielleicht jemand durch draufschauen beurteilen: Funktioniert das überhaupt?

Auf dem Quellrechner:
Code:
dd if=/dev/hda bs=16065b | pv | bzip2 -1 | netcat ZielIP 5555
Auf dem Zielrechner:
Code:
netcat -l -p 5555 | dd of=/dev/hdx bs=16065b

Müsste es auf dem Quellrechner nicht
Code:
... | bzip2 -1 -c | ...
heißen und auf dem Zielrechner
Code:
netcat -l -p 5555 | bzip2 -d -c | dd of=/dev/hdx bs=16065b

Danke für eure Antworten
TrialAndError
 
Ist nur halt blöd, weil ungenutzte Bereiche auf der Platte üblicherweise nicht null-Bytes enthalten, sondern alte Dateien, weshalb tar/rsync bevorzugt wird.
 
A

Anonymous

Gast
jengelh schrieb:
Ist nur halt blöd, weil ungenutzte Bereiche auf der Platte üblicherweise nicht null-Bytes enthalten, sondern alte Dateien,
http://wiki.linux-club.de/Dd#Problem_Komprimierung_von_dd-Image
http://wiki.linux-club.de/Dd#dd_auf_Partitionen_und_ganze_Festplatten_anwenden

selbstverständlich muss man die Daten erst wieder dekomprimieren bevor man sie auf Platte schreibt.
Aber warum erst aufwendig komprimieren und dann wieder aufwendig dekomprimieren? Und um Zeit zu sparen nutzen man dazwischen netcat?


Code:
netcat -l -p 5555 | dd of=/dev/hdx bs=16065b
#Auf dem Quellrechner
dd if=/dev/hda bs=16065b | pv | bzip2 -1 | netcat ZielIP 5555
würde eine komprimiertes Image als Backup auf dem Zeilrechner direkt auf der Platte ablegen, die blanke Festplattenverschwendung, sowas legt man besser als File, oder noch besser als Fileserie ab.


Komprimierung und dann netcat und dann dekomprimierung ist meiner Meinung nach ein bischen Unfug. Komprimierung erreicht man wahrscheinlich effektiver gleich mit ssh und dürfte trotz Verschlüsselung auch nicht viel langsamer sein als der Doppelbefehl mit Komprimierung und netcat. Mit ssh läßt sich aber der Befehl bequem von einem Rechner aus starten. Netcat, rsh und ähnliche entfalten ihre vollen Geschwindigkeitsvorteile erst, wenn davor und danach nicht komprimiert wird.


robi
 
OP
T

TrialAndError

Member
Vielen Dank für eure aufschlussreichen Anmerkungen.

Angenommen die Platte hat wirklich viele Nullen (Zustand nach
Code:
dd if /dev/zero of /dev/hda
und Rückspielen eines Images, z. B. mit Acronis) und ich führe
Code:
dd ...
gleichzeitig mit mehreren Zielen aus - lohnt sich dann evtl. die Komprimierung?

Grüße
TrialAndError
 
TrialAndError schrieb:
Angenommen die Platte hat wirklich viele Nullen (Zustand nach
Code:
dd if /dev/zero of /dev/hda
und Rückspielen eines Images, z. B. mit Acronis) und ich führe
Code:
dd ...
gleichzeitig mit mehreren Zielen aus - lohnt sich dann evtl. die Komprimierung?
Mach doch den Test -- TrialAndError eben 8)
Kommt drauf an. Irgendwo schneiden sich natürlich die beiden Kurven "nix komprimieren" und "etwas komprimieren" für eine gewisse Datenmenge und Leitung.

Wenn die Platte nur Nullen enthält, dann kannst du auch gleich `cat /dev/zero >/dev/disk/by-id/blafasel` auf dem Zielrechner machen ;-)
 
OP
T

TrialAndError

Member
Hallo,

ich habe meinem Pseudonym alle Ehre gemacht und einiges probiert:
Code:
client: netcat -l -p PORT | dd of=/dev/hda
server: dd of=/dev/hda | netcat CLIENT PORT
Dies bringt eine Übertragungsrate von 1M.

Code:
client: netcat -l -p PORT | gzip -d -c | dd of=/dev/hda
server: dd of=/dev/hda | gzip -1 -c | netcat CLIENT PORT
Dies bringt eine Übertragungsrate von max. 3M. Dabei gibt es fast keine Netzwerklast. Jedoch bricht die Übertragungsrate nach kurzer Zeit ein. Der Server steht und der der Client arbeitet bei 50 % CPU und schreibt Daten. Ich kann also bis zu 3 HDs übers Netz ohne Zeitverlust clonen.

Ich verstehe bloß nicht, warum ich unkomprimiert nur 1M bekomme. Müssten das im 100er-Netz nicht ca. 10 M(Byte) sein?

Danke für eure Antworten.
TrialAndError
 
Verwende halt nicht dd wenn du nicht musst, das ist sowas von sinnlos.
Code:
client: netcat -l -p PORT | dd of=/dev/hda
server: dd of=/dev/hda | netcat CLIENT PORT
Ich glaub damit schrottest du die Platte, wenn du auf dem Server of= nimmst. Sinnvoller is da...
Code:
netcat -l -p port >/dev/hda
netcat cl port </dev/hda
 
OP
T

TrialAndError

Member
Sorry, heißt natürlich
Code:
dd if= ...
Tippfehler.

Übrigens bin ich mit der Funktion von dd ganz zufrieden, bloß die Geschwindigkeit kann ich mir nicht erklären. ;-)
Aber die hat nichts mit dd zu tun.

Grüße: TrialAndError
 
OP
T

TrialAndError

Member
Problem gelöst: 1M = 10Mbit = Netzwerkkarte kaputt :idea:

Code:
dd if=/dev/sda bs=100k | gzip -1 -c | nc IP PORT

Dies bringt auf meinem System nun durchschnittlich 30M/s im 100er-Netz (10M/s). :!:

Da macht es Spaß in einem Rutsch gleichzeitig (quasi multicast) gleich mehrere Festplatten zu klonen: http://www.linux-club.de/viewtopic.php?t=86362&highlight=

Grüße
TrialAndError
 
Oben