Aqui – Log El Weblog de Aqui

18jul/120

Linux: Cómo mover la carpeta /home a una nueva partición

Volviendo a las nerdeadas, ahora que tengo una PC nueva volví a la carga con cuestiones de instalación y tuneo de Linux. El método que les presento a continuación lo probé bajo Kubuntu 12.04 pero en principio debería ser posible realizarlo con cualquier distribución.

Tener la carpeta /home en una partición (o disco rígido) diferente de donde se tiene el resto de las carpetas es bastante útil al momento de querer cambiar de distribución, hacer un backup, etc. Para aquellos a quienes nos gusta jugar compilando kernels y probando otras distribuciones, tener la carpeta /home a salvo de los errores es fundamental para no perder los documentos, fotos y música que hayamos recopilado durante años.

La idea general es cambiar el tamaño de la partición actual, si fuera necesario; copiar los archivos a la nueva dirección, renombrar la carpeta anterior, editar el archivo fstab, reiniciar. Aquellos que quieran pasar los archivos a un disco rígido nuevo o una partición existente podrán ver los últimos pasos de este tutorial.

Como en Linux se puede cambiar el tamaño de las particiones que no estén montadas, el primer paso es conseguir una copia de Ubuntu (Kubuntu o cualquier de sus variantes también sirven) en su forma LiveCD; en mi caso lo más cómodo es siempre usar unetbootin y un pendrive. Esto permitirá iniciar Ubuntu sin montar el disco rígido; una vez que tengamos nuestro LiveCD, se reinicia la PC teniendo en cuenta que tenemos que hacer que bootee desde donde hayamos cargado la imagen de Ubuntu (pendrive, CD, etc.).

Una vez que se haya abierto Ubuntu, buscamos el gestor de particiones que viene cargado por defecto. En general se trata de GParted, pero puede ser diferente en otras distribuciones o versiones. Se elige la partición a la que se le desea cambiar el tamaño y se la reduce. Esto generará espacio en el disco rígido que no pertenece a ninguna partición y que deberemos generar para usarlo como /home.

Todo este procedimiento puede ser tan sencillo y claro como mover unas barras de colores si es que estamos usando un programa como GParted. Abajo dejo algunas imágenes de como puede llegar a lucir (dependerá de la versión y del programa, pero la idea es la misma):

Una vez hecho todo esto, se deben montar ambas particiones para poder copiar los datos. Es importante en el paso anterior notar los nombres de las nuevas particiones, generalmente se trata de cosas como /dev/sda1 /dev/sda2 ... Abrimos una terminal (en general basta con apretar Alt + F2 , escribir terminal y enter) y en ella ejecutamos los siguientes comandos:

sudo mkdir /viejo
sudo mount /dev/sda5 /viejo
sudo mkdir /nuevo
sudo mount /dev/sda6 nuevo

En este caso sda5 y sda6 deben ser reemplazados por los nombres asignados a las particiones (donde estaba la carpeta /home y donde estará, respectivamente). Se verá que dentro de la carpeta viejo se tiene toda la estructura de archivos del sistema operativo. Lo que se quiere es pasar la carpeta /home a la nueva partición. Para ello ejecutamos los siguientes comandos:

cd /viejo/home
find . -depth -print0 | cpio --null --sparse -pvd /nuevo/
sudo mv /viejo/home /viejo/home_backup
sudo mkdir /viejo/home

Es importante que el código se copie tal cual se ve aqui. La segunda linea es la que hace todo el trabajo de copiar los archivos a la nueva partición. En la tercera se le cambia el nombre al directorio /home por si fuera necesario recuperarlo en el futuro. En la última linea se crea el directorio /home para que pueda ser montado en el la nueva partición.

Una vez terminado todo este proceso, se debe cambiar el archivo fstab que es donde se define cómo el sistema operativo monta los discos rígidos por defecto. Lo más simple es usar el editor de texto de la línea de comandos, por ello ejecutamos:

sudo cp /etc/fstab /etc/fstab_backup
sudo nano /etc/fstab

Se deberá ver algo más o menos así:

Con la excepción de que la linea que comienza con /dev/sda6 no debería estar presente y es justamente la que se deberá escribir. Recordando los nombres de las particiones (recordar que sda5 y sda6 son los nombres usados en este ejemplo) se debe escribir algo similar a lo siguiente:
/dev/sda6 /home ext4 errors=remount-ro 0 1
Prestando particular atención a dos cosas: una es el nombre, que se deberá reemplazar por el asignado en el momento de crear la partición y la otra es el tipo de sistema de archivos elegido en el momento del particionado, que en este ejemplo es ext4.

Reiniciamos la computadora y todo debería estar funcionando de forma transpartente (es decir, que se hubiera más de un usuario de la PC, no debería notar que se realizó algún cambio). Por supuesto, si en algún momento escasea el espacio en la partición raíz (aquella donde solía estar la carpeta /home) se puede ejecutar simplemente:

sudo rm -rf /home_backup

Mucho quidado con este último comando ya que puede borrar todo el sistema operativo.

Si hubiera algún problema al iniciar la PC es fácil restaurar las cosas al punto de partida. Se deberá iniciar de nuevo con el LiveCD y en una terminal se ejecutarán los siguientes comandos:

sudo mkdir /recuperacion
sudo mount -t ext4 /dev/sda5 /recuperacion
sudo cp -R /recuperacion/home_backup /recuperacion/home
sudo cp /recuperacion/etc/fstab_backup /recuperacion/etc/fstab

Luego se reinicia y listo.

Las ideas para hacer salieron de Psychocats

¿Te gustó este artículo?

¡Suscríbete a nuestro feed RSS!

Publicado por aqui_c