I have been able to move users away from their homes one by one to a bigger and cheaper HDD.
I can freely decide in which drive I host each user.
I have been using the system for some time now without issues BUT I have not tried to delete an user yet.
I this post I comment the solution: Moving Home directories
Script to move an user to a different location
#!/bin/bash
#compruebo que lo corre root
if [ "$(id -u)" != "0" ]; then
echo "Debes ejecutar este script como root"
exit 1
fi
#compruebo que haya parametro
if [ -z "$1" ]; then
echo "Debes introducir el dominio que quieres mover."
echo "sintaxis: $0 midominio.com"
echo " "
ls /home/ --color="auto"
echo " "
exit 1
fi
origen="/home/$1"
destino="/home2/$1"
origenb="$origen/"
destinob="$destino/"
abortar="false"
#compruebo que el origen no sea un enlace simbólico
if [ -h $origen ]; then
echo "El origen es un symbolik link"
abortar="true"
fi
#compruebo que el origen es un directorio
if [ -d $origen ]; then
echo "El directorio de origen existe."
else
echo "El directorio de origen no existe!"
echo "Puede deberse a que el cliente no haya sido creado o que hayas introducido mal el nombre del dominio."
abortar="true"
fi
#compruebo que no haya una migracion anterior
if [ -d $destino ]; then
echo "El directorio de destino ya existe! Aborto!"
echo "$destino"
abortar="true"
fi
#Si ha habido errores criticos aborto
if [ "$abortar" == "true" ]; then
exit 1
fi
#todo OK: Realizo la operacion.
#Para evitar inconsistencias paro servicios de correo
echo "*********************************"
echo "* Paramos los servicios... *"
echo "*********************************"
#/usr/local/hestia/bin/v-list-sys-services | grep running | cut -d" " -f1 | xargs -I {} sh -c "echo 'Parando {}'; service {} stop; echo 'Fin.'"
service bind9 stop
service dovecot stop
service exim4 stop
echo "Creando directorio: $destino"
mkdir $destino
echo "Moviendo los correos a: $destino"
rsync -alH $origenb $destino
#cp -a $origenb $destinob
echo "Preparo origen para borrarlo"
chattr -i $origen/conf
echo "Borrando los correos del origen"
rm -Rf $origen
echo "Creando enlace origen-destino"
# ojo la sintaxis de ln: ln source_file link_file
ln -s $destino $origen
#reinicio los servicios
echo "*********************************"
echo "* Iniciamos los servicios... *"
echo "*********************************"
/usr/local/hestia/bin/v-list-sys-services | grep stopped | cut -d" " -f1 | xargs -I {} sh -c "echo 'Iniciando {}'; service {} start; echo 'Fin.'"
#Lista de servicios activos
/usr/local/hestia/bin/v-list-sys-services
Script to move a user back to /home
#!/bin/bash
#compruebo que lo corre root
if [ "$(id -u)" != "0" ]; then
echo "Debes ejecutar este script como root"
exit 1
fi
#compruebo que haya parametro
if [ -z "$1" ]; then
echo "Debes introducir el dominio que quieres mover."
echo "sintaxis: $0 midominio.com"
echo " "
ls /home/ --color="auto"
echo " "
exit 1
fi
origen="/home2/$1"
destino="/home/$1"
origenb="$origen/"
destinob="$destino/"
abortar="false"
#compruebo que el destino sea un enlace simbolico
if [ -h $destino ]; then
echo "El destino ($destino) es un symbolic link."
abortar="false"
else
echo "El destino ($destino) no es un symbolic link. Aborto."
abortar="true"
fi
#compruebo que el origen es un directorio
if [ -d $origen ]; then
echo "El directorio de origen existe."
else
echo "El directorio de origen no existe!"
echo "Puede deberse a que el cliente no haya sido creado o que hayas introducido mal el nombre del dominio."
abortar="true"
fi
#Si ha habido errores criticos aborto
if [ "$abortar" == "true" ]; then
exit 1
fi
echo "*********************************"
echo "* Paramos los servicios... *"
echo "*********************************"
#/usr/local/hestia/bin/v-list-sys-services | grep running | cut -d" " -f1 | xargs -I {} sh -c "echo 'Parando {}'; service {} stop; echo 'Fin.'"
service bind9 stop
service dovecot stop
service exim4 stop
echo "Deshaciendo enlace origen-destino"
# ojo la sintaxis de ln: ln source_file link_file
unlink $destino
echo "Creando directorio: $destino"
mkdir $destino
echo "Moviendo los correos a: $destino"
rsync -alH $origenb $destino
echo "Borrando los correos del origen"
rm -Rf $origen
#reinicio los servicios
echo "*********************************"
echo "* Iniciamos los servicios... *"
echo "*********************************"
#/usr/local/hestia/bin/v-list-sys-services | grep stopped | cut -d" " -f1 | xargs -I {} sh -c "echo 'Iniciando {}'; service {} start; echo 'Fin.'"
service bind9 start
service dovecot start
service exim4 start