Hace unos días me trajeron una máquina con Windows XP instalado sobre una partición NTFS. "Aparentemente" la partición estaba dañada, daba uno de esos famosos pantallazos azules y no cargaba por ninguno de los medios más conocidos para bootear particiones de Windows. Intenté incluso colocando el disco en otra máquina con Windows XP y booteando para al lo menos extraer la información y hacer el respaldo. Pero lamentablemente todo los intentos transcurrieron sin éxito alguno.
Bueno, como no soy partidario de Windows, decidí bootear la máquina usando un live-cd de Knoppix a ver que pasaba. Al primer intento no cargó la partición correctamente, reinicié y como al 3 intento cargo la partición sin problema alguno. BINGO! Ya podía leer los archivos y hacer el respaldo... Oh wait! Eran aproximadamente 6.1GB de información, solo tenía un pen drive de 512MB y la pc tenía quemador de cds pero allí estaba cargado el cd de Knoppix... Una situación díficil. He escuchado por ahí que se puede sacar el live-cd de Knoppix para usar la unidad en otras cosas pero nunca lo he probado ni tenía el tiempo para ponerme a investigar al respecto. El cronometro marchaba sin vuelta atrás.
En ese momento dije: "Sería bueno poder pasar esta toda información para otra máquina a través de la red..." y fue entonces cuando recordé el viejo Netcat. Para enviar archivos de una pc a otra se debe ejecutar el comando nc en ambas máquinas. Primero en la máquina que contiene la data a transmitir (servidor) y luego en la que recibirá la data (cliente).
Abri una consola en la máquina que actuaría como servidor y escribí lo siguiente:
Es una sola línea de código pero muy poderosa. Primero le decimos al comando tar que nos genere un archivo .tar de la carpeta ruta_de_la_carpeta_a_copiar (puede ser más de una carpeta si es necesario). La salida del comando tar no irá a ningún archivo, sino que la pasaremos al comando nc usando pipeline. Luego al comando nc le decimos que espere 10 segundos antes de realizar la conexión (-w 10), que use el puerto 5667 (-p 5667) y por último que se ponga a la espera de conexiones entrantes (-l).
Ahora del lado del cliente:
Aquí, se le indica al comando nc que intente conectarse al host cuya dirección es direccion_ip_del_servidor a través del puerto 5667 y que la data entrante sea volcada sobre el archivo nombre_del_archivo.tar
Para mejorar un poco la visualización de progreso en la transferencia se puede usar el comando pv. El comando en el cliente sería algo como:
Eso nos da un pequeño aviso en la consola del cliente sobre la cantidad de datos que han sido transferidos .
Con ese par de comandos salvé la noche y puede guardar los datos para respaldarlos luego. Espero que también pueda servirles a ustedes en algún momento. Saludos
Bueno, como no soy partidario de Windows, decidí bootear la máquina usando un live-cd de Knoppix a ver que pasaba. Al primer intento no cargó la partición correctamente, reinicié y como al 3 intento cargo la partición sin problema alguno. BINGO! Ya podía leer los archivos y hacer el respaldo... Oh wait! Eran aproximadamente 6.1GB de información, solo tenía un pen drive de 512MB y la pc tenía quemador de cds pero allí estaba cargado el cd de Knoppix... Una situación díficil. He escuchado por ahí que se puede sacar el live-cd de Knoppix para usar la unidad en otras cosas pero nunca lo he probado ni tenía el tiempo para ponerme a investigar al respecto. El cronometro marchaba sin vuelta atrás.
En ese momento dije: "Sería bueno poder pasar esta toda información para otra máquina a través de la red..." y fue entonces cuando recordé el viejo Netcat. Para enviar archivos de una pc a otra se debe ejecutar el comando nc en ambas máquinas. Primero en la máquina que contiene la data a transmitir (servidor) y luego en la que recibirá la data (cliente).
Abri una consola en la máquina que actuaría como servidor y escribí lo siguiente:
$ tar -c - ruta_de_la_carpeta_a_copiar | nc -w 10 -p 5667 -l
Es una sola línea de código pero muy poderosa. Primero le decimos al comando tar que nos genere un archivo .tar de la carpeta ruta_de_la_carpeta_a_copiar (puede ser más de una carpeta si es necesario). La salida del comando tar no irá a ningún archivo, sino que la pasaremos al comando nc usando pipeline. Luego al comando nc le decimos que espere 10 segundos antes de realizar la conexión (-w 10), que use el puerto 5667 (-p 5667) y por último que se ponga a la espera de conexiones entrantes (-l).
Ahora del lado del cliente:
$ nc direccion_ip_del_servidor 5667 > nombre_del_archivo.tar
Aquí, se le indica al comando nc que intente conectarse al host cuya dirección es direccion_ip_del_servidor a través del puerto 5667 y que la data entrante sea volcada sobre el archivo nombre_del_archivo.tar
Para mejorar un poco la visualización de progreso en la transferencia se puede usar el comando pv. El comando en el cliente sería algo como:
$ nc direccion_ip_del_servidor 5667 | pv -b > nombre_del_archivo.tar
Eso nos da un pequeño aviso en la consola del cliente sobre la cantidad de datos que han sido transferidos .
Con ese par de comandos salvé la noche y puede guardar los datos para respaldarlos luego. Espero que también pueda servirles a ustedes en algún momento. Saludos