Para hacer un backup en Zimbra en la versión open source hay que ejecutar un script que copie todos los archivos de la carpeta /opt/zimbra a otra. Y para restaurar el backup sustituir los archivos de la carpeta /opt/zimbra por los del backup.
1- Crear la carpeta donde se quiere respaldar todo en este caso lo haremos en la carpeta /backup/zimbra
2 –(Opcional) el archivo data.mdb por defecto viene con tamaño extendido es decir que le dan 46GB aun que no ocupe tanto entonces si el tamaño este no se reduce manualmente, la copia ocupará y tardara mucho. En este caso se va a reducir a 500MB cada uno debe reducirlo a lo que crea que le puede llegar a ocupar. Para ver lo que ocupa escribir los siguientes comandos:
# su – zimbra
# /opt/zimbra/libexec/zmldapmonitordb -d
Estos son los parametros que definen el tamaño del archivo.
ldap_db_maxsize
ldap_accesslog_maxsize
Para reducir su tamaño hay que hacer lo siguiente:
# su – zimbra
# zmlocalconfig -e 524288000
# zmlocalconfig -e 524288000
# ldap stop
# ldap start
3- Crear un archivo y pegar ahí el script:
# vim backup.sh
#!/bin/bash
# Zimbra Backup Script
# Crea una carpeta adicional con la fecha en la que se ejecuta la copia
today=”$(date +%m-%d-%y)”
mkdir “/backup/zimbra/zimbra-$today”
# Mostrar por pantalla el tiempo
echo Time backup started = $(date +%T)
before=”$(date +%s)”
# Se hace una copia en caliente de todos los datos de /opt/zimbra en la carpeta de backup
rsync -avHK –exclude ‘data/ldap/mdb/db’ –delete /opt/zimbra/ /backup/zimbra/zimbra-$today
before2=”$(date +%s)”
# Parar los servicios de Zimbra
su – zimbra -c”/opt/zimbra/bin/zmcontrol stop”
sleep 30
# Matar todos los procesos huérfanos que pudiera haber
ORPHANED=`ps -u zimbra -o “pid=”` && kill -9 $ORPHANED
# Volver a sincronizarlo por si hubiera habido cambios
rsync -avHKS –exclude ‘data/ldap/mdb/db’ –delete /opt/zimbra/ /backup/zimbra/zimbra-$today
# Copiar la carpeta db ya que contiene el archivo data.mdb que ocupa mucho si no se cambia y haciendo un rsync tarda demasiado.
cp -r /opt/zimbra/data/ldap/mdb/db /backup/zimbra/zimbra-$today/data/ldap/mdb/
# Reiniciar los servicios de Zimbra
su – zimbra -c”/opt/zimbra/bin/zmcontrol start”
# Calcular el tiempo que se ha tardado en hacer
after=”$(date +%s)”
elapsed=”$(expr $after – $before2)”
hours=$(($elapsed / 3600))
elapsed=$(($elapsed – $hours * 3600))
minutes=$(($elapsed / 60))
seconds=$(($elapsed – $minutes * 60))
echo Server was down for: “$hours hours $minutes minutes $seconds seconds”
# Crear un .txt con la version de Zimbra
su – zimbra -c “zmcontrol -v > /backup/zimbra/zimbra-$today/conf/zimbra_version.txt”
# Muestra el estado de los servicios de Zimbra
echo Displaying Zimbra services status…
su – zimbra -c “/opt/zimbra/bin/zmcontrol status”
# Crea un archivo comprimido de la carpeta backup por si se quisiera tener
umask 0177
tar -zcvf “/backup/zimbra/zimbra-$today/mail.backup.$today.tgz” -C /backup/zimbra .
# Muestra el tiempo de compresión
echo Time backup finished = $(date +%T)
# Calcula el tiempo total del backup
after=”$(date +%s)”
elapsed=”$(expr $after – $before)”
hours=$(($elapsed / 3600))
elapsed=$(($elapsed – $hours * 3600))
minutes=$(($elapsed / 60))
seconds=$(($elapsed – $minutes * 60))
echo Time taken: “$hours hours $minutes minutes $seconds seconds”
Una vez pegado el script guardar el archivo y ejecutarlo:
# bash backup.sh
Restaurar la copia
Para empezar hay que parar todos los servicios de Zimbra.
# /etc/init.d/zimbra stop
Despues para restaurar la copia es muy sencillo, lo que hay que hacer es borrar 1 la carpeta /opt/zimbra:
# rm -rf /opt/zimbra/*
Una vez borrada, hay que hay que pasar todo los datos a esa carpeta:
En el caso de que la carpeta del Backup esté en el mismo equipo hay que hacer lo siguiente:
# mv /backup/zimbra/zimbra-11-09-14/* /opt/zimbra/
En el caso de que la copia esté en otro equipo hay que hacer lo siguiente;
# rsync -avzr -e ssh root@192.168.1.5:backup/zimbra/zimbra-11-09-14/* /opt/zimbra/
Luego puede dar problemas de permisos al reiniciar los servicios para ello hay que hacer lo siguiente:
# chown –R zimbra:zimbra /opt/zimbra
# /opt/zimbra/libexec/zmfixperms –extended
Para terminar iniciar los servicios otra vez
# /etc/init.d/zimbra start
Estimado,
he hecho este procedimiento alrededor de 5 veces ya, y en todas las ocasiones, al copiar el backup en /opt/zimbra voy a su – zimbra y ejecuto zmcontrol restart me aparece el error de zmcontrol command not found.
Esto me ha pasado todas las veces que he copiado.
La copia debe hacerse con zimbra detenido? puesto que yo he generado la copia de los archivos en un zimbra en ejecucion, puede ser por esta razon?
Gracias.
Saludos
Buenas,
prueba en el siguiente path: /opt/zimbra/bin/zmcontrol
si lo haces desde /opt/zimbra no encontrará el comando.
Un saludo
Amigo buenos dias, tengo el zimbra 8.9 y cuando corro los comandos en la configuracion cambia pero el archivo real no:
[zimbra@zimbra ~]$ /opt/zimbra/libexec/zmldapmonitordb -d
Total space: 1041503354880
Total free: 834037940224
Total used: 207465414656
ldap_db_maxsize=524288000
ldap_accesslog_maxsize=524288000
mdb_used=15282176
alog_used=0
mdb_warning_size=419430400
alog_warning_size=419430400
mdb_critical_size=471859200
alog_critical_size=471859200
mdb_alarm=0
alog_alarm=0
space_alarm=0
mdb_growth_size=0
alog_growth_size=0
[zimbra@zimbra db]$ ls -l
total 14932
-rw——- 1 zimbra zimbra 53660876800 Sep 27 09:43 data.mdb
-rw——- 1 zimbra zimbra 8192 Sep 27 09:43 lock.mdb
yo se que no es el real:
[zimbra@zimbra db]$ du -h /opt/zimbra/data/ldap/mdb/db/data.mdb
15M /opt/zimbra/data/ldap/mdb/db/data.mdb
el mio es muy pequeño por que mi ldap lo tengo externo solo uso el de zimbra para 10 cuentas locales, pero no se que mas hacerle para poder bajalo y por mas que busco en internet no encuentro como hacerlo, por favor me puede hechar una mano, muchas gracias.