En la configuración previa de mi estación de trabajo tenía todos los archivos en una única partición, incluyendo los directorios $HOME
de usuarios. El problema fue que, luego de unos años, y a medida que fui descargando archivos y creando nuevos, mi ~
(/usr/home/emi
) empezó a ocupar mucho tamaño y necesité recuperar algo de espacio en el sistema de archivos raíz. Con lo cual procedí a moverlo a una nueva partición (o disco), lo cual es una tarea muy sencilla.
En este caso se trata de un sistema FreeBSD, pero el procedimiento es exactamente igual en sistemas GNU/Linux.
Por supuesto, antes de comenzar se debe contar con una partición o disco donde alojar el $HOME
. En mi caso tenía la partición /dev/ada0s3
casi sin utilizar, montada bajo
/vault. Veamos entonces cómo hacer que /vault/
pase a ser /usr/home/emi/
.
El primer paso consiste en desloguearse o cerrar la sesión del usuario actual. No es posible mover el $HOME
de usuario si hay aplicaciones (incluyendo el entorno de escritorio) que están haciendo uso del mismo.

Habiendo cerrado la sesión como usuario "emi", iniciar una nueva TTY (por ejemplo Ctrl+F2
) y autenticarse como root (no es necesario iniciar el entorno gráfico ya que se hace todo desde consola).
Mover TODOS los archivos en /usr/home/emi
hacia la partición o disco destino (actualmente montado como /vault
):
root@hal9000:~ # mv /usr/home/emi/* /vault root@hal9000:~ # mv /usr/home/emi/.* /vault
En los sistemas FreeBSD, /home
es un enlace simbólico a /usr/home
:
root@hal9000:~ # ll /home lrwxr-xr-x 1 root wheel 8 Nov 21 2014 /home@ -> usr/home
En los sistemas GNU/Linux, en cambio, los directorios $HOME
de usuario se encuentran directamente bajo /home/
.
El comando mv
(move) preserva todos los metadatos de los archivos como ownership, permisos, fechas de creación/modificación, etc. Con lo cual no hay inconveniente alguno en mover los archivos en el home a un sistema de archivos diferente. Salvo claro, que el destino utilice un sistema de archivos que no soporte los atributos Unix (tal como un sistema de archivos NTFS), o no soporte todas las características o atributos en uso en el origen (por ejemplo, ACLs). Cuestiones básicas a tener en cuenta.
Al finalizar la copia, desmontar el sistema de archivos destino:
root@hal9000:~ # umount /vault
Luego editar el archivo /etc/fstab
para que ahora la partición o disco montada como /vault
sea montada como /usr/home/emi
:
root@hal9000:~ # nano /etc/fstab
Cambiar la línea:
/dev/ada0s3 /vault ufs rw 1 1
Por:
/dev/ada0s3 /usr/home/emi ufs rw 1 1
Volver a montar todo:
root@hal9000:~ # mount -a
Ahora se observa el dispositivo /dev/ada0s3
está montado bajo /usr/local/emi
:
root@hal9000:~ # mount /dev/ada0s1a on / (ufs, local, journaled soft-updates) devfs on /dev (devfs, local, multilabel) procfs on /proc (procfs, local) /dev/ada0s2 on /data (ufs, local) /dev/ada0s3 on /usr/home/emi (ufs, local) linprocfs on /usr/compat/linux/proc (linprocfs, local) tmpfs on /usr/compat/linux/dev/shm (tmpfs, local)
Y recuperé unos 5,2 GB del directorio raíz (/
):
root@hal9000:~ # df -h Filesystem Size Used Avail Capacity Mounted on /dev/ada0s1a 39G 29G 6.3G 82% / devfs 1.0K 1.0K 0B 100% /dev procfs 4.0K 4.0K 0B 100% /proc /dev/ada0s2 326G 277G 23G 92% /data /dev/ada0s3 66G 5.2G 55G 9% /usr/home/emi linprocfs 4.0K 4.0K 0B 100% /usr/compat/linux/proc tmpfs 8.6G 4.0K 8.6G 0% /usr/compat/linux/dev/shm
Ya es posible cerrar la sesión como root y volver a la TTY del entorno gráfico (Ctrl+F9
en FreeBSD) para iniciar nuevamente la sesión como el usuario "emi".
Una opción diferente (luego de mover los archivos a su nuevo destino) para no tener que alterar puntos de montaje, consiste en cambiar el $HOME
el usuario en vez de montar /dev/ada0s3
como /usr/local/emi
. A tal fin, en lugar de editar el archivo /etc/fstab
se debe modificar al usuario "emi" de la siguiente forma.
En FreeBSD:
# pw -d /vault emi
En GNU/Linux:
# usermod -d /vault emi
Lo cual haría que la entrada del usuario "emi" en la base de datos de usuarios (/etc/passwd
) quede de la siguiente forma:
emi:*:1001:0:Emiliano:/vault:/bin/tcsh
Cuando actualmente es:
emi:*:1001:0:Emiliano:/home/emi:/bin/tcsh
En mi caso preferí mantener el $HOME
en /home/emi
y montar la partición /dev/ada0s3
allí, para que las aplicaciones no noten ningún cambio de ruta (de /usr/home/emi
a /vault
). Just in case.