Full Backup and restore en Zimbra

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.

Los pasos a seguir son:

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

3 comments

  1. 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

  2. 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.

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *