Cómo mover una cuenta de cPanel a otra partición manualmente

Cómo mover una cuenta de cPanel a otra partición manualmente

cPanel incluye una función nativa llamada rearrange que permite mover cuentas entre particiones desde WHM. Sin embargo, este proceso requiere espacio libre suficiente en la partición de origen para crear una copia temporal, y cuando la partición está casi llena, el rearrange falla sin completarse.

En este artículo aprenderás a mover una cuenta de cPanel a otra partición de forma manual, sin depender del rearrange nativo. Este procedimiento utiliza rsync para la sincronización de archivos y sed para actualizar las rutas en los archivos de configuración.

¿Cuándo es necesario este procedimiento?

  1. El rearrange de WHM falla por falta de espacio en la partición de origen.
  2. Necesitas mover una cuenta a una partición con más espacio disponible.
  3. Deseas redistribuir cuentas entre particiones para mejorar el rendimiento del servidor.

Antes de comenzar

  1. Acceso SSH al servidor con privilegios de root.
  2. Verifica que la partición de destino tenga espacio suficiente para alojar la cuenta completa. Puedes comprobarlo con df -h.
  3. Identifica y anota los siguientes datos que utilizarás a lo largo del proceso:
USUARIO — Nombre de la cuenta de cPanel
homeOrigen — Partición actual (ejemplo: home)
homeDestino — Partición destino (ejemplo: home2)

Importante: Las bases de datos MySQL/MariaDB no se ven afectadas por este proceso ya que residen en /var/lib/mysql, no en /home. No es necesario migrarlas.

Fase 1: Preparación

Crea una sesión de screen para que el proceso no se interrumpa si pierdes la conexión SSH:

screen -S mover_USUARIO

Si tu conexión se cae, puedes reconectarte a la sesión con:

screen -r mover_USUARIO

Fase 2: Sincronización inicial

Ejecuta el primer rsync para copiar todos los archivos de la cuenta a la partición de destino. Esta sincronización se puede realizar con la cuenta activa, ya que no es el corte definitivo:

rsync -avhzo /homeOrigen/USUARIO/ /homeDestino/USUARIO

Si la cuenta es grande y quieres recibir una notificación por correo al finalizar:

rsync -avhzo /homeOrigen/USUARIO/ /homeDestino/USUARIO && echo "Sincronización inicial completada" | mail -s "rsync USUARIO finalizado" tu@correo.com

Nota: Presta atención a la diagonal final (/) después de USUARIO/ en el origen. Esto indica a rsync que copie el contenido del directorio, no el directorio en sí.

Fase 3: Sincronización final con consistencia

Una vez completada la sincronización inicial, ejecuta un segundo rsync con la opción --delete para asegurar que la copia en destino sea una réplica exacta. Esto eliminará en destino cualquier archivo que haya sido borrado en el origen durante la primera sincronización:

rsync -avhzo --delete /homeOrigen/USUARIO/ /homeDestino/USUARIO

Este segundo rsync será mucho más rápido ya que solo transferirá los archivos que hayan cambiado desde la primera sincronización.

Fase 4: Actualizar configuración

Actualizar userdata y ProFTPD

Modifica las rutas de la partición en los archivos de configuración de cPanel y ProFTPD:

sed -i 's/homeOrigen/homeDestino/g' /var/cpanel/userdata/USUARIO/*
sed -i 's/homeOrigen/homeDestino/g' /etc/proftpd/USUARIO

Actualizar /etc/passwd

Modifica la ruta del directorio home del usuario en el archivo de contraseñas del sistema:

nano /etc/passwd

Busca la línea que contiene tu USUARIO y cambia /homeOrigen/USUARIO por /homeDestino/USUARIO. No modifiques ningún otro dato de la línea.

Actualizar contraseñas de correo y reiniciar servicios

Actualiza las rutas en los archivos de contraseñas de correo electrónico, reconstruye la configuración de Apache, reinicia los servicios afectados y actualiza CageFS (solo si utilizas CloudLinux):

sed -i 's/homeOrigen/homeDestino/g' /homeDestino/USUARIO/etc/*/passwd
/scripts/rebuildhttpdconf
service httpd restart
service pure-ftpd restart
/scripts/updateuserdatacache
cagefsctl -m USUARIO

Nota: Si tu servidor no utiliza CloudLinux, omite el último comando (cagefsctl).

Fase 5: Verificación

Antes de eliminar los datos del origen, verifica que todo funcione correctamente:
  1. Sitio web: Abre el sitio del usuario en el navegador y confirma que carga sin errores.
  2. Correo electrónico: Envía y recibe un correo de prueba desde la cuenta del usuario.
  3. FTP: Conéctate por FTP con las credenciales del usuario y verifica que el directorio home apunte a la nueva partición.
  4. cPanel: Inicia sesión en cPanel con la cuenta del usuario y rev