Me gustaría copiar cosas a granel (reimage usando el disco dd
) con netcat del host A a B a través del canal cifrado ssh en Linux.
¿Qué comandos debo escribir en ambos extremos?
fuente
Me gustaría copiar cosas a granel (reimage usando el disco dd
) con netcat del host A a B a través del canal cifrado ssh en Linux.
¿Qué comandos debo escribir en ambos extremos?
Copiar desde el origen al destino donde el destino tiene sshd ejecutándose:
dd if=/dev/sda | gzip | ssh root@target 'gzip -d | dd of=/dev/sda'
Copiando desde el origen al destino a través de sshd_host cuando el destino no ejecuta sshd.
nc -l -p 62222 | dd of=/dev/sda bs=$((16 * 1024 * 1024))
ssh -L 62222:target:62222 sshd_host &
Fuente: dd if=/dev/sda | nc -w 3 localhost 62222
dd - if = es el origen, of = es el destino, bs = es el tamaño del bloque. Diferentes tamaños de bloque pueden mejorar el rendimiento. 16 es usualmente un punto de partida bastante razonable. También puede usar count = para indicar cuántos bloques copiar.
nc - -p indica el puerto a usar para los servicios. -l se usa para iniciar un servicio. -w configura el tiempo de espera de datos en la canalización antes de salir.
ssh - -L configura el túnel en el host remoto. El formato del argumento es, local_port:target_host:target_port
. Su programa local (nc) se conecta a local_port, esta conexión se tunela y se conecta a target_port en target_host.
Las opciones definidas son solo las utilizadas para esto. Mire las páginas del manual para más detalles.
Algunas notas
source machine dd -> nc -> ssh -> ssh tunnel -> sshd server -> nc on target -> dd
Si quieres usar netcat sin ssh. Supongo que es la forma más rápida y no la segura, puede copiar y restaurar todo el disco de esta manera:
en la computadora A con IP 192.168.0.1
cat /dev/hdb | nc -p 9000
En la computadora B
nc -l 192.168.0.1 9000 > /dev/hdb
Recuerde que según man nc la opción -l es:
-l Se usa para especificar que nc debería escuchar una conexión entrante en lugar de iniciar una conexión a un host remoto. Es un error utilizar esta opción junto con las opciones -p, -s o -z.
netcat no es necesario.
en la ejecución de la máquina src:
dd if=/dev/sdX bs=1M | ssh root@dstMachine " dd of=/dev/sdY bs=1M"
Supongo que ninguna de las particiones en SDX y SDY están montadas. puedes arrancar ambas cajas con knoppix u otra distribución en vivo similar.
dd: toma datos de if [si no se proporciona, los toma de stdin], envía datos a de [si no se proporciona, los datos se envían a stdout]. bs - tamaño de bloque ... acelerará las cosas.
ssh: ejecuta el comando proporcionado entre comillas en la caja remota, todos los datos bombeados a stdin de ssh se tunelizarán a la máquina remota y se proporcionarán como stdin al comando ejecutado allí.
El host A es el de la imagen, el host B es el que se almacenará la imagen:
Restaurar en el disco simplemente intercambiaría esos dos.
fuente
La copia básica con netcat se describe aquí .
Si necesita involucrar a SSH en esto, puede usar el reenvío de puertos sobre eso,
Pero, en general, podría hacer la transferencia SSH en primer lugar (sin netcat).
fuente
Mientras los sistemas de archivos estén desmontados, dd funciona bien.
Necesitará la configuración de autenticación de la clave de host con anticipación o, de lo contrario, la solicitud de contraseña hará que la copia falle.
Hacer esto en un volumen montado producirá malos resultados.
fuente
O bien, puede usar clonezilla y "montar" su almacenamiento remoto a través de sshfs.
fuente
Intenté una combinación de las opciones proporcionadas anteriormente y comparto los resultados con usted. más rápido a más lento utilizando combinaciones de tamaño de bloque dd, algoritmo de compresión gzip y gzip.
Como puede ver, gzip solo me dio una mejora al usar el algoritmo rápido junto con un tamaño de bloque de 1M.
Se utilizaron dos servidores rápidos conectados con GigE a través de un conmutador Enterprise GigE utilizando discos locales a través de LVM.
fuente
Parece que estás usando un mazo para romper una nuez aquí, o tal vez una mejor analogía es tratar de cortar el césped con unas tijeras :)
Te sugiero que veas algunas de las herramientas disponibles para hacer un trabajo como este, a menos que tengas buenas razones para hacerlo internamente.
Trinity Rescue Kit es un liveCD gratuito que admite unidades de imagen a través de multidifusión, y puede hacer lo que desee (o incluso cualquier otra persona que piense en las mismas líneas), sin tener que recurrir a sistemas de imagen de gran calibre.
fuente