Buen día…
Es común en el ambiente personal o el corporativo encontrarnos con el deseo, debido a cualquier fuerza interna o externa a nosotros, de mover /home de un sitio a otro, que por lo general es a otra partición, bien ¿cómo hacerlo?…
Antes de empezar, algunas notas :
¿Por qué tener /home en otra partición?
Si se tiene /home en la misma partición de / y por alguna razón hay que re-instalar el sistema operativo probablemente perdamos nuestra preciosa y preciada información o tengamos que hacer respaldo cada vez que esto suceda, lo cual es tedioso y más si hablamos de varios usuarios; la mejor opción es poner /home en otra partición convirtiendo el directorio en parte independiente del sistema. Esta estrategia es muy utilizada incluso en otros directorios como por ejemplo el directorio /var, /usr, entre otros.
Otra, grandisima, ventaja es la posibilidad de cambiar el tamaño de la partición sin afectar el sistema. Imaginemos que ya tenemos a /home en otra partición y se quedó sin espacio, no es mayor problema debido a que (teniendo la posibilidad) podemos cambiar el tamaño de dicha partición a nuestro antojo.
Aclarado esto… procedemos…
Escenario :
- Nuestro PC con GNU/Linux corriendo y sin espacio en nuestra partición / para mas archivos donde, por supuesto, está /home también.
Hardware :
- Disco Duro /dev/sda, esto puede variar según la distribución, el tipo de disco duro (IDE, SATA, etc) y cómo esté particionado. Por lo general : IDE = /dev/hdX
SATA = /dev/sdX
SCSI = /dev/scsiX o /dev/sgX - Para este caso la partición donde se desea colocar /home es /dev/sda9.
- El sistema de archivos utilizado es reiserfs.
1.- Verificar la existencia de la partición donde deseamos colocar nuestro directorio /home :
#fdisk /dev/sda
Luego tecleamos “p” y veremos la tabla de particiones.
2.- Al ver que todo está bien, vemos que /dev/sda9 es nuestra partición destino.
3.- Montamos /dev/sda9 en algún directorio de nuestra preferencia. Podemos crearlo en caso de que sea necesario:
#mkdir /mnt/nuevo_home
Ojo con los permisos de la carpeta, el usuario normal debe tener permiso de escribir en ese directorio.
4.- Montar el dispositivo. Cambiar el sistema de archivos al que usted este utilizando.
#mount -t reiserfs /dev/sda9 /mnt/nuevo_home
5.- Luego, la idea es copiar todo lo que esta en /home (carpetas de usuarios, enlaces, archivos ocultos, carpetas ocultas y cualquier otra especie que tenga un usuario en su carpeta) a lo que posteriormente será nuestro nuevo /home.
$cd /home
$find . -depth -print0 | cpio –-null –-sparse -pvd /mnt/nuevo_home/
Comando fume :
find : herramienta para buscar archivos en un dispositivo.
“.” : Directorio actual.
-depth : Buscar en cada directorio, TODOS Y CADA UNO!
-print0 : Muestra el nombre completo del archivo seguido de un caracter nulo que permite que los programas (como
find) interpreten correctamente los nombres de los archivos que contienen nuevas lineas.
“|” : pipe ![]()
cpio : Programa para copiar archivos.
–null : Le dice a cpio que entienda los nombres de los archivos que terminen en caracter null
–sparse : Escribir archivos que contengan grandes bloques de 0 como archivos esparcidos.
Nota acerca de sparse : Manera matemática de verlo : imaginemos una matriz gigante
8000×8000 por ejemplo, donde la mayoria de los datos son 0, mediante operaciones matemáticas es posible
manipular esta matriz de manera eficiente (no consumir taaaaanttaaa memoria).
-pvd : Es visto de esta manera :
p : no copia los archivos que ya existan en el destino.
v : Muestra todo “verbose”
d : Crea los directorios padre donde sea necesario.
Nota : Posiblemente se puede hacer todo esto con $cp -a. Lo cierto del caso que la idea es mantener la estructura, los permisos y atributos de los archivos originales en el directorio destino.
6.- Verificar que todo se copió como debe ser.
7.- Desmontar /mnt/nuevo_home/
8.- Mover el /home actual a /viejo_home
#mv /home/ /viejo_home/
9.- Debido a que ya no existe /home, debemos crearlo :
#mkdir /home
10.- Montar el dispositivo en nuestro nuevo /home
#mount /dev/sda9 /home
11.- Luego modificamos nuestro /etc/fstab, agregando :
/dev/sda9 /home reiserfs notail,defaults 0 0
ó
/dev/sda9 /home reiserfs notail,defaults 0 1
12.- Luego de volver a verificar que todo esta bien, borramos lo que no nos interesa, como por ejemplo :
#rm -rf /viejo_home /mnt/nuevo_home
Listo. Es una de las distintas maneras que hay, considero que es la mas sencilla.
Espero les sirva. Pura Vida!!
Referencias importantes :
http://ubuntu.wordpress.com/2006/01/29/move-home-to-its-own-partition/
http://ralph.n3rds.net/index.php?/archives/143-Move-the-home-directory-to-a-separate-partition.html
http://www.us.debian.org/doc/manuals/reference/ch-tips.en.html#s-archiving

Posted by andres on Monday, 14 September 2009 at 8:18 pm
Que tal te hago una consulta, hago los pasos que vos describis pero cuando reinicio no me toma los cambios me sale un cartel en el medio de la pantalla diciendome que el directorio /home/andres ( mi usuario) no se encontro y que si quiere iniciar con el de root.Me pregunta si si o si no.
Hago exactamente como los explicas pero me pasa esto.Mi duda es en el paso 3…sera un problema de permisos que no tiene esa carpeta? ( habro nautilus como sudo y a la carpeta del paso 3 la hago que el propietario sea yo y que pueda leer y escribir)
El escenario es este: tengo una particion en etx4 que antes estaba windows y quiere mover ahi /home por si las dudas pasase algo…ahora googleando encontre este tutorial y todo sale perfecto hasta el reinicio que me lo rechaza
Tambien sospecho el tema de editar el archivo fstab que me pone en duda poner esto
notail,defaults 0 1
Ya que no se que son esos parametros.
Ya se que este “como” es viejo pero a mi me sirve y mucho.Gracias y saludos.
Andrés
Posted by Francisco Rivas on Saturday, 3 October 2009 at 10:19 pm
Hola Andres perdona que no habia contestado este mensaje, descuide el blog, si aun tienes el problema me puedes enviar un correo? gracias.