Los respaldos siempre son importantes, sobre todo de los correos, que actualmente son tan vitales e importantes al contener la información de nuestro negocio, etc.
Hoy un cliente ha tenido la necesidad de respaldar sus correos electrónicos corporativos y todo lo relacionado a cada cuenta (contactos, tareas, etc.) de su servidor zimbra, aunque zimbra permite que cada usuario exporte su data desde su cuenta, esta herramienta es poco efectiva.
La solución la tenemos con el comando zmmailbox, que podemos aprovechar desde la consola.
Para evitar al cliente tener que respaldar manualmente cada cuenta, ya que asumo lo requerirá hacer con “n” frecuencia de meses… decidí ahorrarle todo el trabajo y programar un script que le permita automatizar esta tarea.
Script para respaldar buzones/cuentas de zimbra:
Al correr el siguiente script, permite respaldar las cuentas y guardarlas en la ruta /home/backupzimbra/
#!/bin/bash if [ $USER = 'zimbra' ]; then for i in `zmprov -l gaa` do echo ; echo Preparando la cuenta $i para ser copiada ...; mb_size=`zmmailbox -z -m $i gms`; echo Tamano de la cuenta: $mb_size ...; echo Iniciamos a copiar la cuenta $i ...; zmmailbox -z -m $i getRestURL "//?fmt=tgz" > /home/backupzimbra/$i.tgz echo Cuenta $i copiada exitosamente!; done echo Fin del script.; else echo Ejecute este script como usuario zimbra. Ejecute: su zimbra; fi
El script nos ira imprimiendo en consola los resultados, algo como lo siguiente:
Preparando la cuenta admin@dominio.com para ser copiada …
Tamano de la cuenta: 73,85 MB …
Iniciamos a copiar la cuenta admin@midominio.com …
Cuenta admin@midominio.com copiada exitosamente!
El script funciona bastante bien… pero segun el tamaño de los buzones, y de cuantos buzones tengan, tomará horas…
Script para conocer el tamaño de las cuentas de Zimbra solamente
El siguiente script genera una lista de las cuentas y su tamaño en tiempo real.
#!/bin/bash if [ $USER = 'zimbra' ]; then for account in `zmprov -l gaa` do mb_size=`zmmailbox -z -m $account gms`; echo El tamano de la cuenta $account es = $mb_size.; done echo Para conocer el espacio del disco, ejecute: "df -Ph | column -t"; else echo Ejecute este script como usuario zimbra. Ejecute: su zimbra fi
Este script imprimirá algo como:
El tamano de la cuenta admin@dominio.com es = 73,85 MB.
Cómo restaurar los backup?
Los respaldos pueden recuperarse con el siguiente comando:
zmmailbox -z -m USUARIO@DOMINIO.com postRestURL “//?fmt=tgz&resolve=reset” nombre_del_fichero_de_respaldo.tgz
Como “instalar” los scripts?
Sigue los siguientes pasos:
- Ubicate en la ruta donde desees copiar los scripts. Ejemplo: cd /home/
- Crear la carpeta backupzimbra/ con el comando: mkdir backupzimbra
- Puedes usar el comando vi para crear el archivo de texto, o usa el editor de codigo que te guste. Ejemplo: vi zimbra_backup.sh
- Copia y pega el codigo del script, y guarda el archivo.
- Agregamos permisos de ejecucion con el siguiente comando: chmod a+x zimbra_backup.sh
- Agregar permisos al directorio backupzimbra con el siguiente comando chown -R zimbra:zimbra /home/backupzimbra
- Corremos el script con el siguiente comando (no olvidar hacerlo como usuario zimbra): ./zimbra_backup.sh
Una opcion mas elegante, ejecutar el script como un comando :), lo haces asi:
- Copiamos el script a una ruta “especial”: sudo cp zimbra_backup.sh /usr/sbin/zimbra_backup
- Ejecutamos directamente el siguiente comando: zimbra_backup
- A esperar termine de correr el script… y recuperar los respaldos en la carpeta /home/backupzimbra/
Tengo una pregunta como es esto al correr el Script esto se haria imediatamente o solo a cierta hora
Lo defines tu con una tarea programada (cron) segun tu necesidad.
buenas al momento de dar el permiso me arroja el siguiente error chown: invalid option — ‘z’
Try `chown –help’ for more information.
El comando correcto es:
chown -R zimbra:zimbra /home/backupzimbra
verifica la -R tenga un espacio entre zimbra:zimbra
Saludos,
Saludos Luigi, mi estimado desde hace unos años trabajamos con zimbra como servidor de correo y hasta ahora es muy bueno, pero en la parte de respaldo no he podido al 100% garantizar su restauración. Te cuento que mediante un script puedo generar respaldos de cuentas y restaurarlas siempre y cuando tenga la carpeta zimbra en su ubicación /opt/zimbra, pero si por algún motivo el servidor presenta falla los respaldos no me han servido para restaurar el contenido de las cuentas, tan solo restaura los nombres de correos y otras configuraciones.
Al final gracias a un amigo se tuvo que utilizar zextra backup que a pesar de ser limitado por tiempo, se pudo recuperar las cuentas de correo y su contenido.
Mi pregunta es si conoces o tienes un script paracido a zextra que permita generar un backup de todas las cuentas de correo y su contenido para luego restaurar en un servidor zimbra configurado tal cual como en su momento de producción.?
Gracias amigo por la información que puedas aportarme.
Puedes modificar el script con los comandos de «zextra backup»… o bien puedes tambien actualizar las rutas de mi script y usar la que desees.
Saludos,
Ok, Luigi tu script permite respaldar todas las cuentas de correo con el contenido de toda la configuración y poder restaurarlas en el servidor configurado como antes sin ningún problema o perdida de información..? Muchas gracias amigo por tu aporte.
Mi script simplemente simplifica el proceso de respaldar un buzon de zimbra y lo hace con la misma herramienta de backup que incorpora zimbra desde la consola.
Desde tu servidor zimbra, sugiero revisar el comando zmmailbox que es con el cual se ejecutan los respaldos.
Saludos,
Gracias Luigi me sirvió de mucho, me podrías pero ayudar con el script que permita respaldar automaticamente las cuentas y buzones cada 15 por ejemplo y en un disco externo usb, agradezco mucho de antemano tu aporte.
Para respaldar cada determinado tiempo puedes correr el script con una tarea programada (CRON). Y para cambiar la ruta donde deseas guardar los respaldos, cambia la ruta /home/backupzimbra/ por la que desees, y listo 😉
Amigo tu script restaura solo una cuenta o todas las cuentas respaldadas?
zmmailbox -z -m USUARIO@DOMINIO.com postRestURL “//?fmt=tgz&resolve=reset” nombre_del_fichero_de_respaldo.tgz
Gracias.
Hola, el script restaura TODAS las cuentas de zimbra.
Hola estimado, al ejecutar:
zmmailbox -z -m USUARIO@DOMINIO.com postRestURL “//?fmt=tgz&resolve=reset” nombre_del_fichero_de_respaldo.tgz
Me imagino que restaura el correo de USUARIO@DOMINIO.COM, pero como restauro todos al mismo tiempo, o tendria que restaurar uno por uno.
Saludos
Hola, tendrias que hacer un mix de ambos script… al respaldar los buzones muestra como hace una boucle de las cuentas existenteas, de esa misma manera podrias mezclar el codigo para que te respalde todas las cuentas con un solo script.
Gracias amigo super Bueno.
Que gusto que te sea útil, saludos.
Buena tarde, una duda, al querer ejecutar el primer script como usuario zimbra, me tira un error que dice: Líne 4: ubuntu syntax error ( expecting «do») ¿cuál podrá ser el error? gracias por la respuesta de antemano.
Saludos
Sugiero actualices el interprete. La verdad esta publicacion es muy antigua, es probable que el codigo deba ser actualizado, no lo he probado desde que publique el post.