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

Leave a Reply

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