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?
- El rearrange de WHM falla por falta de espacio en la partición de origen.
- Necesitas mover una cuenta a una partición con más espacio disponible.
- Deseas redistribuir cuentas entre particiones para mejorar el rendimiento del servidor.
Antes de comenzar
- Acceso SSH al servidor con privilegios de root.
- Verifica que la partición de destino tenga espacio suficiente para alojar la cuenta completa. Puedes comprobarlo con
df -h. - 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:
- Sitio web: Abre el sitio del usuario en el navegador y confirma que carga sin errores.
- Correo electrónico: Envía y recibe un correo de prueba desde la cuenta del usuario.
- FTP: Conéctate por FTP con las credenciales del usuario y verifica que el directorio home apunte a la nueva partición.
- cPanel: Inicia sesión en cPanel con la cuenta del usuario y rev