Esta es una situación en la que estoy frecuentemente:
- Tengo un servidor de origen con un disco duro de 320 GB en su interior y 16 GB de RAM ( especificaciones exactas disponibles aquí , pero como este es un problema que también encuentro con frecuencia en otras máquinas, preferiría que la respuesta funcione en cualquier máquina Linux "razonable")
- Tengo un servidor de respaldo con varios terabytes de espacio en el disco duro ( especificaciones exactas aquí , ver descargo de responsabilidad más arriba)
Quiero transferir 320 GB de datos del servidor de origen al servidor de destino (específicamente, los datos de /dev/sda
).
- Las dos computadoras están físicamente una al lado de la otra, por lo que puedo tender cables entre ellas.
- Estoy en una LAN y estoy usando un enrutador nuevo , lo que significa que la velocidad de mi red debería ser "idealmente" de 1000Mbit, ¿verdad?
- La seguridad no es un problema. Estoy en una red local y confío en todas las máquinas de la red, incluido el enrutador.
- (opcional) No necesito necesariamente una suma de verificación firmada de los datos, pero se debe detectar la comprobación básica de errores (como paquetes descartados o que la unidad se vuelva ilegible) en lugar de simplemente desaparecer en la salida.
Busqué esta pregunta en línea y probé varios comandos. La que aparece con más frecuencia es esta:
ssh user@192.168.1.100 'dd bs=16M if=/dev/sda | gzip' > backup_sda.gz
Este comando ha demostrado ser demasiado lento (se ejecutó durante una hora, solo obtuvo aproximadamente 80 GB a través de los datos). El paquete de prueba de 1 GB tardó aproximadamente 1 minuto y 22 segundos, y terminó siendo el doble de rápido cuando no se comprimió. Los resultados también pueden haber sido sesgados por el hecho de que el archivo transferido es menor que la cantidad de RAM en el sistema fuente.
Además (y esto fue probado en piezas de prueba de 1 GB), obtengo problemas si uso el gzip
comando y dd
; el archivo resultante tiene una suma de comprobación diferente cuando se extrae en el destino, que si se canaliza directamente. Todavía estoy tratando de entender por qué sucede esto.
/dev/sda
como una imagen o simplemente los archivos? ¿Por qué rsync no tiene opción? ¿Está /dev/sda
montado mientras dd
ed?