en to es guadapeich
La idea común subyacente a todos los métodos descritos a continuación es establecer una conexión de red entre el ordenador "origen" (el que va a ser clonado) y el ordenador "destino" (el clon). Esto es simple si ambos están conectados a un hub, en otro caso puedes conectar las tarjetas de red mediante un cable cruzado (los cables rectos normales no se pueden utilizar). Para el PC destino, un Live-CD (como Knoppix o LNX-BBC) o una instalación minimalista es necesaria de tal forma que la tarjeta de red esté operativa y ssh y/o netcat puedan ser usados. Hay también algunas distribuciones en disquete que te lo permitirán (en mi equipo tomsrtb no levantó la tarjeta de red al inicio). Si quieres instalar una nueva distribución, esa es también una alternativa fácil. Ambos ordenadores necesitan ser configurados con direcciones IP en la misma red de forma que puedan "hablar" uno con otro, como se muestra en la ilustración superior.
Con la configuración básica descrita hay varias formas de realizar el clonado:
ssh-keygen -t rsaPara mantener las cosas simples, no entres una clave. La llave pública está en el archivo /root/.ssh/id_rsa.pub. Copia este archivo al PC origen mediante
scp /root/.ssh/id_rsa SourcePC:/tmpdonde SourcePC es la dirección IP del PC origen. Cuando pregunte si estas seguro, teclea un completo ''yes'' (solamente "y'' algunas veces no funciona). Estas todavía siendo preguntado por la contraseña de root en el PC origen. Ahora agrega el PC destino como un nodo de la red confiable mediante
cat /tmp/id_rsa.pub >> /root/.ssh/authorized_keysen el PC origen. Para comprobar si todo está correcto, repite el anterior comando de copia en el PC destino. No serás preguntado mas por la contraseña.
El primer paso es siempre particionar el disco duro en el ordenador destino y entonces crear el sistema de ficheros ext2/ext3. El último es activar la variante preferida de journalling simplemente colocando la opción -j (journalling) en mke2fs (requiere tener soporte ext3 en el kernel). Puedes incluso convertir un sistema ext2 a ext3, mira tune2fs(8). Digamos que en el ordenador origen tenemos la configuración siguiente:
Partición | Tamaño | Usada | %Usada | Montada en |
---|---|---|---|---|
/dev/hda3 | 2.7G | 552M | 22% | / |
/dev/hda5 | 7.8G |
1.6G | 22% | /usr |
/dev/hda7 | 6.3G | 1.7G | 28% | /usr/share |
/dev/hda8 | 3.4G | 601M | 19% | /home |
/dev/hda12 | 5.3G | 1.9G | 37% | /opt |
/dev/hda1 | 587M | 70M | 13% |
/var/backup |
Recomiendo hacer siempre alguna clase de partición. Si no en caso de fallo en el sistema de ficheros o corrupción de algunos sectores del disco duro se pueden destruir todos tus datos. Y de acuerdo a la Ley de Murphy, es seguro que sucederá si no tomas precauciones usando particiones diferentes en vez de usar una única. Tuve un caso recientemente con un kernel gracioso y no había particionado el disco, perdí todos mis datos sobre el sistema de ficheros corrupto. Arriba se muestra que /usr se hizo demasiado grande, por eso /usr/share ha sido añadido. Es el momento para conseguir un disco duro mayor.
En el PC destino lanza parted (recomendado) o tu particionador favorito (Qtparted es una bonita variante en modo gráfico, que dice ser un clon de Partition Magic). Crea particiones al menos tan grandes como las del PC origen. No olvides la partición swap. Después de salvar la tabla de particiones, instala un sistema de ficheros en todas la particiones recientemente creadas, usandomke2fs -j -L <label> /dev/xxxdonde xxx es el nombre de la partición y <label> una etiqueta. Normalmente uso cosas como ''/usr'' como etiquetas (las verás en el arranque). Puedes configurar varias cosas mediante tune2fs(8), como la revisión del sistema de ficheros de forma regular.
mount /dev/xxx /mntAl clonar es necesario cambiar al directorio destino
cd /mntAhora la red, teclea en el PC destino
ssh targetPC 'dump -0 -f - /' | restore -r -f -donde targetPC es la dirección IP del ordenador destino. Las opciones significan ''-0'' para una copia de seguridad completa, ''-f -'' le dice que use stdin/stdout como descriptor de archivo y ''-r'' indica a restore que recree el sistema de ficheros mediante volcado por la red en el PC destino. Para más opciones mira dump(8) y restore(8). Abajo puedes ver la salida para transferir el sistema de ficheros raíz.
$ ssh 10.42.3.42 'dump -0 -f - /' | restore -r -f - DUMP: Date of this level 0 dump: Tue Feb 22 15:50:12 2005 DUMP: Dumping /dev/hda3 (/) to standard output DUMP: Label: debian DUMP: Writing 10 Kilobyte records DUMP: mapping (Pass I) [regular files] DUMP: mapping (Pass II) [directories] DUMP: estimated 547312 blocks. DUMP: Volume 1 started with block 1 at: Tue Feb 22 15:50:14 2005 DUMP: dumping (Pass III) [directories] DUMP: dumping (Pass IV) [regular files] DUMP: Volume 1 completed at: Tue Feb 22 15:51:43 2005 DUMP: Volume 1 546590 blocks (533.78MB) DUMP: Volume 1 took 0:01:29 DUMP: Volume 1 transfer rate: 6141 kB/s DUMP: 546590 blocks (533.78MB) DUMP: finished in 89 seconds, throughput 6141 kBytes/sec DUMP: Date of this level 0 dump: Tue Feb 22 15:50:12 2005 DUMP: Date this dump completed: Tue Feb 22 15:51:43 2005 DUMP: Average transfer rate: 6141 kB/s DUMP: DUMP IS DONERestore siempre crea un archivo restoresymtable el cual puede ser borrado una vez que estas convencido de que no se han producido errores durante la reconstrucción del sistema de ficheros. Finalizado el sistema de ficheros raíz, ahora procedemos con cada partición, comenzando con /usr (asumiendo que tu actual directorio de trabajo es la raíz del futuro sistema de ficheros).
mount /dev/xxx ./usr cd ./usr ssh targetPC 'dump -0 -f - /usr' | restore -r -f -El ciclo mount-cd-dump/restore se repite para todos los directorios que tengas. Con miras a /usr/share (el cual en el PC origen tiene su propia partición) puedes, después del paso anterior, simplemente cambiar al directorio ./usr/share (fíjate en el ".") y entonces repetir
ssh targetPC 'dump -0 -f - /usr/share' | restore -r -f -Restore solo se queja si los archivos existen en el sistema de ficheros que está siendo restaurado, así cuando ponemos dos particiones diferentes del PC origen en el PC destino no hay problema. Clonar un PC completo tomó sobre una hora con ssh y tarjetas de red de 100MB (con cable cruzado algo más).
Nota: Para volcar un sistema de ficheros, no es necesario que esté montado. Puedes también pasar un nombre de partición, como /dev/hda6, en vez del nombre del directorio donde se monta la partición.
Una alternativa, en vez de usar ssh, es netcat(1) que se abrevia como nc. Netcat es la navaja suiza de los TCP/IP cliente-servidor y permite crear una tubería sobre la red. El ejemplo anterior es entonces modificado como sigue. Asumimos que la partición montada bajo /var/backup va a ser transferida mediante dump/restore desde el PC origen a el PC destino.
En el punto de llegada (PC destino) crea una sesión de escucha de netcat vía -l que vuelque su salida a restore.nc -l -p 2000 -q 1 | restore -r -f -En el PC origen crea otra sesión de netcat que tome su entrada desde una tubería donde target-IP es la dirección IP del PC destino.
dump -0 -f - /var/backup | nc <target-ip> 2000La opción -q es para parar nc después de recibir el final del fichero, pero yo tengo que terminarlo manualmente en mi caso. Recomiendo usar ssh de todas formas.
grub> root (hd0,xxx) ... filesystem is ... grub> setup (hd0) ... lots of output here grub> quito corre grub-install /dev/xxx donde xxx es tu disco duro. Aquí comprueba ambos, root (hdn,xxx) y la configuración añadida a root=/dev/xxx.
En el caso común de que ahora tengas mejor hardware en el PC clonado nuevo, querrás actualizar la configuración de tu kernel a medida. Si estas usando un sistema que viene con montones de módulos preconfigurados (como RedHat, SuSe, Mandrake, Fedora ...) no te preocupes, es bastante posible que exista un módulo utilizable. En caso contrario, lspci -vv y compilar el kernel es algo común y está descrito en muchos sitios. Si tu tarjeta gráfica es diferente ahora, actualiza /etc/X11/XF86Config-4 (o xorg.conf en RH/Fedora) para reflejarlo, o no tendrás salida gráfica. Es posible usar las herramientas de gráficos para configurar X arrancando en el nivel 3 si tienes esas herramientas. En debian, alguna investigación es necesaria, yo fui afortunado al encontrar que el controlador cambió de r128 a radeon y eso fue lo que hice.
Este cómo explica el procedimiento de clonado para sistemas de ficherosext2/ext3. Órdenes muy similares se pueden encontrar en muchos otros sistemas. Por ejemplo, varios Unices como FreeBSD, HP-UX, IRIX también suministran las órdenes dump/restore; en Solaris se llama ufsdump/ufsrestore. Hay sistemas de ficheros que no ofrecen la utilidad de volcado, por ejemplo ReiserFS. En este caso recomendaría usar rsync. Mira [1] para un informe de clonado de un sistema Linux con éxito.