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.


Tal vez pueda interesarte


Compartí este artículo