Script para respaldar y mover todas las cuentas en CPanel
Gustavo | 19 Junio, 2008 | 9:32 pmBueno, como tristemente nadie conocido o cercano sabe decifrar que mierdi dice el Kernel Oops que arrojo el server, habra que respaldar todo y hacerlo cuenta por cuenta, nos demorariamos como 3 siglos.
Buscando en internet, encontre un blog de una mina, una tal v-nessa (Programming is Sexy -> :D) donde habla sobre las pifias soluciones que tiene CPanel para mover multiples cuentas de servidor a servidor, el problema de su sistema es que falla contastemente, aparte de que al momento de restaurar a veces se corrompen las DBs o caracteres con ácéntós y hacer todos los pasos uno por uno, es una lata.
Ella dice que la manera mas facil es hacer un script en bash, el cual haga todo el proceso por nosotros, esta mas que claro, que lo es ;).
El script despues del salto
1.- Deben crear un listado con los usuarios, pueden usar este comando
ls /var/cpanel/users > users.txt
Cuanto lo tengan listo, abranlo y borren las dos primeras lineas que salen (../ y ./), la idea es que solo queden nombres de usuarios, sin puntos o slashes
2.- Ocupar el script magico
El original es:
#! /bin/bash
for i in `cat users.txt`; do /scripts/pkgacct $i; done
scp -r /home/cpmove* root@server:/home
echo “Account backups done” > email.txt
mail -vv -s “Account backups done” your@emailaddress.com < email.txt
El mio es:
#! /bin/bash
for i in `cat users.txt`;
do echo “….. Procesando cuenta” $i `date` “……” >> registro.txt
/scripts/pkgacct $i >> registro.txt
scp -r /home/cpmove* root@server:/home/carpeta >> registro.txt
echo “Enviando al server…” `date` >> registro.txt
rm -fv /home/cpmove* >> registro.txt
echo “……” `date` .Terminado “…..” >> registro.txt;
echo “-” >> registro.txt
done
echo “————————” >> registro.txt
echo “Generando mySQL full backup ” `date` >> registro.txt
mysqldump –all-databases –complete-insert –add-drop-table –force > /home/mysqldumpbig.sql
echo “Generado teoricamente ok” `date` >> registro.txt
scp -r /home/mysqldumpbig.sql root@server:/home/carpeta >> registro.txt
echo “Enviando al server…” `date` >> registro.txt
echo “———————— FIN `date` ——————–” >> registro.txt
mail -vv -s “Backup full terminado” tu@email < registro.txt
Actualizacion: Ahora respalda tambien mySQL completa y genera log que se envia por email. (Lo ocupe, el mismo script , y funciono correctamente)
Lo que hace a grandes razgos, es leer del archivo “users.txt que recien se creo, todos los usuarios, hacer el backup, copiarlo via scp al otro servidor, borrar el backup generado y volver a empezar. Cuando termine el ciclo enviara un mail con todo el log de todo el proceso, deberia funcionar!
Cualquier duda o consulta pueden decirme y gracias a v-nessa por la idea del script ;) (Thanks for the script!, it’s nicely best)
Saludos!









