Risposte:
Copia dall'origine alla destinazione dove target ha sshd in esecuzione:
dd if=/dev/sda | gzip | ssh root@target 'gzip -d | dd of=/dev/sda'
Copia dall'origine alla destinazione tramite sshd_host quando la destinazione non esegue sshd.
nc -l -p 62222 | dd of=/dev/sda bs=$((16 * 1024 * 1024))
ssh -L 62222:target:62222 sshd_host &
Fonte: dd if=/dev/sda | nc -w 3 localhost 62222
dd - if = è l'origine, di = è la destinazione, bs = è la dimensione del blocco. Diverse dimensioni di blocco possono migliorare le prestazioni. 16 è di solito un punto di partenza abbastanza ragionevole. Puoi anche usare count = per indicare quanti blocchi copiare.
nc - -p indica la porta da utilizzare per i servizi. -l viene utilizzato per avviare un servizio. -w imposta il tempo di attesa per i dati nella pipeline prima di uscire.
ssh - -L imposta il tunnel sull'host remoto. Il formato dell'argomento è, local_port:target_host:target_port
. Il tuo programma locale (nc) si connette a local_port, questa connessione viene tunnelata e connessa a target_port su target_host.
Le opzioni definite sono solo quelle utilizzate per questo. Guarda le pagine man per maggiori dettagli.
Alcune note:
source machine dd -> nc -> ssh -> ssh tunnel -> sshd server -> nc on target -> dd
Se vuoi usare netcat senza ssh. Presumo che sia il modo più veloce e non quello sicuro, è possibile copiare e ripristinare l'intero disco in questo modo:
Sul computer A con IP 192.168.0.1
cat /dev/hdb | nc -p 9000
Sul computer B
nc -l 192.168.0.1 9000 > /dev/hdb
Ricorda che secondo man nc l'opzione -l è:
-l Usato per specificare che nc dovrebbe attendere una connessione in arrivo piuttosto che avviare una connessione a un host remoto. È un errore usare questa opzione insieme alle opzioni -p, -s o -z.
netcat non è necessario.
su src machine run:
dd if=/dev/sdX bs=1M | ssh root@dstMachine " dd of=/dev/sdY bs=1M"
suppongo che nessuna delle partizioni su sdX e sdY sia montata. puoi avviare entrambe le caselle con knoppix o altra distribuzione live simile.
dd - prende i dati da se [se non disponibile - prende da stdin], invia dati di [se non disponibile - dati vengono inviati al stdout]. bs - dimensione del blocco ... velocizzerà le cose.
ssh - esegue il comando fornito tra virgolette sulla casella remota, tutti i dati pompati su stdin di ssh verranno sottoposti a tunnel su macchina remota e porovided come stdin per il comando eseguito lì.
L'host A è quello da immagine, l'host B è quello su cui verrà memorizzata l'immagine:
root@A# dd if=/dev/sda | ssh root@B "dd of=/some/file"
Il ripristino su disco cambierebbe semplicemente quei due.
La copia di base con netcat è descritta qui .
Se devi coinvolgere SSH in questo, puoi utilizzare il port forwarding su quello,
-R [bind_address:]port:host:hostport
Ma, nel complesso, potresti semplicemente fare il trasferimento SSH in primo luogo (senza netcat).
Finché i filesystem sono entrambi smontati, dd funziona bene.
(from server1) dd if=/dev/sda bs=32k | ssh <server2> dd of=/dev/sda bs=32k
Avrai bisogno di un'impostazione di autenticazione della chiave host in anticipo, altrimenti la richiesta della password farà fallire la copia.
Fare questo su un volume montato produrrà scarsi risultati.
In alternativa, è possibile utilizzare clonezilla e "montare" la memoria remota tramite sshfs.
Ho provato una combinazione delle opzioni fornite sopra e sto condividendo i risultati con te. dal più veloce al più lento utilizzando combinazioni di dimensioni del blocco dd, algoritmo di compressione gzip e gzip.
Come puoi vedere, gzip mi ha dato solo un miglioramento quando ho usato l'algoritmo veloce in combinazione con una dimensione del blocco di 1M.
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
Sono stati utilizzati due server veloci collegati con GigE tramite uno switch GigE Enterprise utilizzando dischi locali tramite LVM.
Sembra che tu stia usando una mazza per rompere un dado qui - o forse un'analogia migliore sta cercando di tagliare il prato con le forbici :)
Ti consiglio vivamente di esaminare alcuni degli strumenti disponibili per svolgere un lavoro come questo a meno che tu non abbia ottime ragioni per farlo internamente.
Trinity Rescue Kit è un liveCD gratuito che supporta le unità di imaging su multicast e potrebbe fare quello che vuoi (o addirittura chiunque altro stia pensando sulla stessa linea), senza passare a sistemi di imaging a pieno diametro.