Saludos a todos los lectores de GUTL. seguimos en una de las secciones preferidas por la mayoría de nuestros seguidores, Trucos de [primavera, verano, etc …], espacio en el que compartimos con ustedes las experiencias vividas diariamente al interactuar con nuestros sistemas operativos libres. Hoy estaremos viendo como migrar todos los datos desde un disco duro hacia otro, trabajo que podría resultar útil si por algún motivo necesitamos reemplazar el actual disco duro de nuestro ordenador por otro (de igual o diferente capacidad).
Hace unos días, en una visita casual a casa de un amigo (que coincidentemente migró a Linux hace algunos meses luego de mi persistencia), este me mostró muy alegre un nuevo Disco Duro que le habían regalado (un HDD de 500 Gb que aunque a muchos pueda parecerle un dispositivo de poca capacidad, acá en la Cuba Jurásica sigue siendo un gran paso hacia el gran almacenamiento de datos) y que necesitaba reemplazar el ya obsoleto y medio fallido disco de 160 GB.
Su propuesta en si era quitar el viejo disco y en su lugar colocar el de 500 GB, luego instalar Debian, que era la distro que yo le había instalado en el disco viejo, y emplear un rato en restablecer toda su configuración. Mientras esto ocurría, un primo de mi amigo aguardaba la culminación de esta labor para llevarse el disco de 80 GB que a su vez reemplazaría uno de 40 GB en un ordenador mucho más vetusto.
El detalle de todo esto es que yo ni siquiera andaba con un disco de instalación de Debian, y menos con los repositorios a mano. Así que la idea de instalar sistema y aplicaciones no estaba a nuestro alcance, a menos que yo fuera a mi casa a buscar lo necesario, pero trasladarme de una punta a otra de la ciudad de Santiago de Cuba no iba a ser una alternativa para mi, en una ciudad donde el transporte oficial (motocicletas particulares) ha duplicado su tarifa en este nuevo año (la gracia me iba a salir en no menos de 40 pesos). Ahí se me encendió la chispa: a clonar el disco. Se que esto de clonar el disco hubiera sido lo primero que se le hubiera ocurrido a muchos de ustedes, pero a mi, cuasianalfabeto en estos quehaceres, me pareció toda una repentina alternativa enviada directamente por los Dioses del Open Olimpus.
Luego de contada la necesaria introducción, vamos a los aspectos técnicos del caso en cuestión. Inicialmente tenemos un Disco Duro de 80 GB con el siguiente sistema de particionado:
/dev/sda1 / /dev/sda5 swap /dev/sda6 /home
Y el nuevo Disco Duro de 500 GB que particionaremos de la siguiente manera:
/dev/sdb1 / /dev/sdb2 swap /dev/sdb3 /home
Muchos de seguro han notado que en el caso del primer Disco Duro hay un salto de sda1 a sda5, esto se debe a que a la hora de definir las particiones, hay una partición primaria booteable que es sda1, y luego una partición extendida que se divide en dos: sda5 y sda6. Además, en algún momento creo haber tenido que eliminar una partición donde antes mi amigo albergaba al desterrado Windows 7.
El disco duro de 500 Gb lo particionamos de manera que los números de las particiones se encuentren en forma consecutiva. Este Disco se nombra /dev/sdb porque al instalarlo en el puerto SATA, está compartiendo simultáneamente el sistema con el disco preexistente, /dev/sda.
Formateando las particiones
Para crear las particiones podemos usar alguna herramienta visual como gparted, o alguna aplicación desde consola como cfdisk. Recuerden que en este paso, estamos desde el sistema operativo en el primer DiscoDuro, el de 80 GB. Es decir, desde este, creamos las tres particiones del nuevo Disco Duro. Una vez creadas las particiones, hay que formatearlas:
mkfs.ext4 /dev/sdb1 mkfs.ext4 /dev/sdb3 mkswap /dev/sdb2
Lo que acabamos de hacer es formatear /dev/sdb1 y /dev/sdb2 en formato ext4 y /dev/sdb2 como SWAP.
La orden mkfs.ext4 es similar a mkfs -t ext4. Debemos tomar en cuenta que a la hora de reiniciar en el nuevo disco duro, hay que indicarle al sistema que tiene una nueva partición swap (partición de intercambio):
swapon /dev/sda2
Usamos sda2 y no sdb2, porque al terminar, quitaremos el disco viejo.
Clonando particiones
Ya vamos cayendo en el pollo del arroz con pollo. No hay una receta definitiva para clonar una partición. En nuestro caso, tenemos que hacer una copia exacta del contenido de /home, para esto haremos lo siguiente (como root):
cd /media mkdir sdb3 mmount -t ext4/dev/sdb3 /media/sdb3 rsync -a /home/miamigo media/sdb3
Tranquilos, les explico:
Dentro de /media hemos creado un directorio con nombre sdb3 (que deberá coincidir con el nombre
de la partición del nuevo disco), para que al montarla no cree confusiones. Luego vamos a emplear el comando rsync para sincronizar los archivos y carpetas de /home dentro de /media/sdb3, ya que la partición sdb3 va a ser /home. El flag -a nos va a servir para mantener los permisos, el propietario, la fecha y los directorios.
Inteligentemente hemos utilizado /home/miamigo y no /home/miamigo/, porque si hubiera puesto la barra al final de miamigo, me copiaría exclusivamente los archivos y carpetas dentro de /home/miamigo. Lo que hicimos es equivalente a poner:
rsync -a /home/ /media/sdb3
Como en el caso de mi amigo, solo tiene un usuario en home, da lo mismo poner una u otra línea de comandos.
Llegó el momento de clonar la partición raíz /, que, como es obvio. es un momento crítico y delicado, ya que algún fallo puede dejarnos la partición sin booteo, y por tanto un disco duro sin sistema.
Un consejo antes de el siguiente paso, es hacer algo de limpieza en nuestra partición raiz con tal de ahorrar espacio y disminuir el tránsito de datos innecesarios de un disco duro a otro. Es bueno vaciar previamente la papelera de reciclaje (incluso antes de clonar home), eliminar los paquetes que no están siendo utilizados y paquetes específicos que no necesitemos:
dpkg -l | grep ^rc dpkg --purge paquete
También podemos asegurarnos de eliminar los paquetes del repositorio local: los que nos hemos bajado en cada actualización o instalación desde los repositorios, y se han almacenado en cache:
apt-get clean
Al hacer los pasos anteriores de seguro se darán cuenta que pueden liberar algunos GB de espacio. Bueno, vamos a clonar de una buena vez nuestra raiz /.
En el caso de la partición raíz lo recomendable es copiar bit a bit los datos. Tardará menos que home porque evidentemente es menor cúmulo de información y haciéndolo bit a bit la tendencia a fallos es casi nula y no existerán errores con permisos especiales.
La línea de comandos en este caso es:
dd if =/dev/sda1 of =/dev/sdb1
En este caso no hemos tenido que montar nada. El tiempo para completar la operación será un poco mayor, pero valdrá la pena.
Preparando el reinicio
Al llegar a este punto, ya la partición /dev/sdb1 es un clon de la raiz del sistema instalado en nuestro viejo disco. Llegó el punto de asegurarnos que al retirar el disco de 80 GB, nuestro ordenador reconozco y bootee desde el disco de 500 GB. Es hora de tocar el conocido archivo fstab (el del disco de 500 que se encuentra en /media/sdb1/etc/fstab.
nano /media/sdb1/etc/fstab
Y nos saldrá algo similar a esto:
# /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc nodev,noexec,nosuid 0 0 #Entry for /dev/sda1 : UUID=6b192eef-e188-4e07-94de-14c95e02de78 / ext4 errors=remount-ro 0 $ #Entry for /dev/sda2 : UUID=3bd60ec0-92f3-4ea6-a4d3-aaaf27dd8b8e none swap sw 0 0 #Entry for /dev/sda3 : UUID=3828f973-3b20-4019-9fe2-8296c755be31 /home ext4 defaults 0 2
Ahora necesitamos cambiar las UUID antiguas (las que están en ese archivo fstab son pertenecientes al disco de 80 GB) por las UUID nuevas (pertenecientes al disco nuevo de 500 GB). Para ello, lo que hay que hacer es encontrar los dispositivos por su UUID, y eso se hace de varias maneras:
Una opción puede ser con el comando:
ls -l /dev/disk/by-uuid
Y también usando como root:
blkid
Ahora solo nos resta reemplazar los UUID del fstab por los correctos.
Garantizando el arranque. Instalando Grub2
El Debian Wheezy instalado en el viejo Disco Duro de mi amigo usa Grub2 como arranque de sistema, por lo que en el MBR (Master Boot Record ) del Disco Duro nuevo (el de 500 GB) tendremos que instalar un nuevo GRUB. Es cierto que los archivos de configuración ya están escritos en el directorio /boot, pero el MBR (el primer sector (“sector cero”) del disco duro.) está en blanco, por lo que tal como están las cosas, no sería booteable.
La configuración se guarda dentro de /boot/grub/grub.cfg, pero este archivo se crea por grub-mkconfig, por lo que no sería recomendable editarlo a mano. Lo mejor es, una vez montada la partición nueva (recuerden que la partición raiz recién clonada no está montada, dd clona sin montar la partición):
mount -t ext4 /dev/sdb1 /media/sdb1
Ahora nos toca cargar el GRUB2 en el MBR haciendo lo siguiente:
grub-install /dev/sdb
Y listo, así de sencillo, ya tenemos GRUB configurado en el MBR del Disco Duro de 500 GB.
Pasos finales
Ahora apagamos el ordenador, retiramos el Disco Duro de 80 Gb de mi amigo, se lo entregamos al primo (ver historia inicial), volvemos a encender el ordenador, cruzamos los dedos y…
¿Te atreves a probar?
Fuente: http://swlx.cubava.cu
Cualquier error de redacción o sintaxis de comandos, notifíquenlo en los comentarios. Me costo mas escribir este articulo que realizar el procedimiento descrito en el mismo.
Lindo, lindo el post. 🙂
Error de escribir donde dice «Al llegar a este unto,» debe decir «Al llegar a este punto,». No quería ponerme para estas cositas pero dado que lo autorizaron 🙂
Muy buen artículo y creo que en un futuro me salvará la campana cuando le tenga que enseñar a los infieles.
Salu2
Gracias por la corrección, arreglado
Excelente!!!
Se podria hacer un script que haga todo esto automáticamente algo así como clonepart
si, una muy buena idea
Por cierto, no querras decir partclone????