Antworten:
Kopieren von der Quelle zum Ziel, auf dem sshd ausgeführt wird:
dd if=/dev/sda | gzip | ssh root@target 'gzip -d | dd of=/dev/sda'
Kopieren von der Quelle zum Ziel über sshd_host, wenn auf dem Ziel nicht sshd ausgeführt wird.
nc -l -p 62222 | dd of=/dev/sda bs=$((16 * 1024 * 1024))
ssh -L 62222:target:62222 sshd_host &
Quelle: dd if=/dev/sda | nc -w 3 localhost 62222
dd - wenn = die Quelle ist, von = das Ziel ist, ist bs = die Blockgröße. Unterschiedliche Blockgrößen können die Leistung verbessern. 16 ist normalerweise ein ziemlich vernünftiger Ausgangspunkt. Sie können auch count = verwenden, um anzugeben, wie viele Blöcke kopiert werden sollen.
nc - -p gibt den für Dienste zu verwendenden Port an. -l wird verwendet, um einen Dienst zu starten. -w legt die Zeit fest, nach der auf Daten in der Pipeline gewartet wird, bevor das Programm beendet wird.
ssh - -L - Sets auf den Tunnel auf der Remote - Host. Das Format des Arguments ist local_port:target_host:target_port
. Ihr lokales Programm (nc) stellt eine Verbindung zum local_port her. Diese Verbindung wird getunnelt und mit target_port auf dem target_host verbunden.
Die definierten Optionen sind nur diejenigen, die dafür verwendet werden. Weitere Informationen finden Sie auf den Manpages.
Ein paar Anmerkungen:
source machine dd -> nc -> ssh -> ssh tunnel -> sshd server -> nc on target -> dd
Wenn du netcat ohne ssh benutzen willst. Ich gehe davon aus, dass dies der schnellste und nicht der sichere Weg ist. Sie können die gesamte Festplatte folgendermaßen kopieren und wiederherstellen:
Auf Computer A mit IP 192.168.0.1
cat /dev/hdb | nc -p 9000
Auf Computer B
nc -l 192.168.0.1 9000 > /dev/hdb
Denken Sie daran, dass laut man nc die Option -l ist:
-l Wird verwendet, um anzugeben, dass nc auf eine eingehende Verbindung warten soll, anstatt eine Verbindung zu einem Remotehost herzustellen. Es ist ein Fehler , diese Option in Verbindung mit den Optionen -p, -s oder -z zu verwenden.
netcat wird nicht benötigt.
auf src maschinenlauf:
dd if=/dev/sdX bs=1M | ssh root@dstMachine " dd of=/dev/sdY bs=1M"
Ich gehe davon aus, dass keine der Partitionen auf SDX und SDY gemountet sind. Sie können beide Boxen mit Knoppix oder einer ähnlichen Live-Distribution booten .
dd - nimmt Daten von wenn [falls nicht angegeben - nimmt sie von stdin], sendet Daten an von [falls nicht angegeben - Daten werden an stdout gesendet]. bs - Blockgröße ... beschleunigt die Dinge.
ssh - Führt den Befehl aus, der in Anführungszeichen auf der Remote-Box angegeben ist. Alle Daten, die an stdin von ssh gepumpt werden, werden auf die Remote-Maschine getunnelt und als stdin für den dort ausgeführten Befehl ausgegeben.
Host A ist derjenige, auf dem das Image gespeichert wird, Host B ist derjenige, auf dem das Image gespeichert wird:
root@A# dd if=/dev/sda | ssh root@B "dd of=/some/file"
Das Wiederherstellen auf der Festplatte würde nur diese beiden vertauschen.
Die grundlegende Kopie mit Netcat wird hier beschrieben .
Wenn Sie SSH dazu bewegen möchten , können Sie die Portweiterleitung verwenden .
-R [bind_address:]port:host:hostport
Aber im Großen und Ganzen könnte man den SSH-Transfer überhaupt erst machen (ohne Netcat).
Solange beide Dateisysteme nicht gemountet sind, funktioniert dd gut.
(from server1) dd if=/dev/sda bs=32k | ssh <server2> dd of=/dev/sda bs=32k
Sie müssen die Authentifizierung des Hostschlüssels im Voraus einrichten. Andernfalls schlägt die Kopie aufgrund der Kennwortabfrage fehl.
Wenn Sie dies auf einem bereitgestellten Volume tun, werden schlechte Ergebnisse erzielt.
Oder Sie könnten clonezilla verwenden und Ihren Remote-Speicher über sshfs "mounten".
Ich habe eine Kombination der oben genannten Optionen ausprobiert und teile die Ergebnisse mit Ihnen. am schnellsten bis am langsamsten mit Kombinationen aus dd-Blockgröße, gzip und gzip-Kompressionsalgorithmus.
Wie Sie sehen, hat gzip mich nur bei Verwendung des schnellen Algorithmus in Verbindung mit einer Blockgröße von 1 MB verbessert.
time dd bs=1M if=/dev/HypGroup00/stage-snapshot | gzip --fast | ssh hyp5 'gzip -d | dd bs=1M of=/dev/HypGroup00/stage'
12884901888 bytes (13 GB) copied, 326.045 s, 39.5 MB/s
time dd if=/dev/HypGroup00/stage-snapshot | gzip --fast | ssh hyp5 'gzip -d | dd of=/dev/HypGroup00/stage'
12884901888 bytes (13 GB) copied, 370.158 s, 34.8 MB/s
time dd if=/dev/HypGroup00/stage-snapshot | ssh hyp5 dd of=/dev/HypGroup00/stage
12884901888 bytes (13 GB) copied, 370.274 s, 34.8 MB/s
time dd bs=1M if=/dev/HypGroup00/stage-snapshot | ssh hyp5 dd bs=1M of=/dev/HypGroup00/stage
12884901888 bytes (13 GB) copied, 372.906 s, 34.6 MB/s
time dd bs=1M if=/dev/HypGroup00/stage-snapshot | gzip | ssh hyp5 'gzip -d | dd bs=1M of=/dev/HypGroup00/stage'
12884901888 bytes (13 GB) copied, 520.116 s, 24.8 MB/s
Es wurden zwei schnelle Server verwendet, die über einen Enterprise GigE-Switch mit lokalen Festplatten über LVM mit GigE verbunden waren.
Sieht so aus, als würdest du hier mit einem Vorschlaghammer eine Nuss knacken - oder eine bessere Analogie ist der Versuch, deinen Rasen mit einer Schere zu schneiden :)
Ich würde dringend empfehlen, dass Sie sich einige der Tools ansehen, die für eine solche Aufgabe zur Verfügung stehen, es sei denn, Sie haben gute Gründe, dies intern zu tun.
Das Trinity Rescue Kit ist eine kostenlose Live-CD, die Imaging-Laufwerke über Multicast unterstützt und das tun kann, was Sie möchten (oder auch jeder andere, der in der gleichen Richtung denkt), ohne auf Imaging-Systeme mit vollem Funktionsumfang zurückgreifen zu müssen.