Backup no Zimbra

De Wiki do Ouro Minas Palace Hotel
Ir para navegação Ir para pesquisar

Material necessário

Computador com acesso a CPU do Zimbra através do Putty.exe ou acesso a sua console

Realizado por

Gestor do TI

Observação

Informação retirada do site <https://stato.blog.br/wordpress/backup-no-zimbra/>

Backup no Zimbra ANDRÉ STATO 10 DE FEVEREIRO DE 2016 12 COMENTÁRIOS SERVIDORES, ZIMBRA


Descrição

Antes mesmo de falarmos do backup, devemos saber onde ficam localizadas as mensagens de nossos domínios e usuários.

Sabemos que o zimbra é instalado no diretório /opt/zimbra, e obviamente um backup completo pode ser feito copiando-se todo conteúdo desse diretório.

Um simples script, copiando todo conteúdo de /opt/zimbra, faria o backup full, o restore se daria novamente copiando todo conteúdo para a pasta e fixando as permissões através do comando abaixo :

/opt/zimbra/libexec/zmfixperms –extended 

Mas onde ficam as mensagens dos usuários ?

As mensagens ficam localizadas em /opt/zimbra/store/0 . Dentro desta pastas teremos os id dos usuários, e não os nomes

Podemos identificar qual pasta de cada usuário usando os comandos do próprio zimbra:

su zimbra
zmprov gmi usuario@dominio.com

Obs: gmi significa getMailboxInfo

Aqui então conseguimos verificar o o mailbox do usuário andre@dominiolinux.net é o mailbox 3, então sua pasta ficará em /opt/zimbra/store/0/3. Desta forma podemos fazer backup diretamente da pasta, e restaurar diretamente para a pasta.

Podem ocorrer problemas de index quando feito backup, e comando adicionais devem ser executados.

A primeira coisa a ser feita é remover o índice da conta atual, os arquivos de índice ficam em /opt/zimbra/index/0/X , onde X é o id da conta, no caso do usuário andre@dominiolinux.net, é o valor 3. Desta forma o comando seria :

rm -rf /opt/zimbra/index/0/index/*


É possível já executar um comando, que descubra qual o id diretamente, com a junção dos comandos:

rm -rf /opt/zimbra/index/0/$(/opt/zimbra/bin/zmprov gmi andre@dominiolinux.net | grep mailboxId | awk ‘{ print $2 }’)/index/*

Agora podemos reindexar sem nenhum problema:

zmprov rim andre@dominiolinux.net status

Obs: rim significa reIndexMailbox

Este comando deverá ser executado depois de feito o restore, seja ele manual ou automático, através das ferramentas do zimbra.

Backup através do zmmailbox

Uma outra forma de fazer backup, obviamente não tão manual, é utilizando o zmmailbox, que é uma ferramenta que acompanha o zimbra, e é utilizada para backup de contas individuais.

zmmailbox -z -m andre@dominiolinux.net gru ” //? fmt = tgz” > /srv/backup/andrestato.tgz

Obs: gru significa getRestURL

Com isso já temos nosso backup pronto de uma única conta do Zimbra.

Agora iremos fazer o procedimento de restore. O mesmo comando é executado, mas com algumas alterações:

zmmailbox -z -m andre@dominiolinux.net pru “//? fmt = tgz&resolve=reset” /backup/andrestato.tgz

Obs: pru significa postRestURL

Podemos notar que acima existe um diretiva resolve com o valor reset. Na realidade existem 4 opções de resolve. O resolve informa como ele irá tratar mensagens existentes na caixa. No caso do reset, irá apagar o que existe e sobrescrever todo conteúdo.

Abaixo a opção do resolve:

skip:  ignora itens duplicados, e é também o default para resolução de conflitos.
Modify:  Modifica itens antigos.
reset: irá apagar os diretórios antigos (ou caixa de correio inteira).
replace: irá apagar e re-inserí-los.

Criando um Script para fazer Backup de Todas as contas

Sabendo como funciona o backup individual de contas do Zimbra, fica bem simples fazer um script para fazer backup de todas as contas de uma única vez.

O primeiro passo é pegar todas as contas existentes através do comando zmprov. Exite uma opção gaa (getAllAcconts), que poderá listar todas as contas existentes. A partir desse comando, através de um grep –v, removemos as contas que não queremos fazer backup, tal como admin, gal, entre outras.

Com essa informação em mãos, dentro de um loop , podemos realizar o backup através do zmmailbox.

Vejamos as contas que são trazidas através do comando zmprov:

Podemos ver que as contas admin,spam, ham, vírus*, gal* não nos interessa, um pequeno filtro com o grep já irá remover essas contas:


zmprov –l gaa | grep –v –E “gal|vírus|admin|ham|spam”


Podemos então pegar essa lista, jogar para um loop como o for, e fazer os backups individuais de uma única vez. Abaixo o script, que poderá ser criando no /bin , neste caso irei chamá-lo de backupindzimbra.sh


#!/bin/bash
for i in $( zmprov –l gaa | grep –v –E “gal|vírus|admin|ham|spam”);do
zmmailbox -z -m $i gru ” ///? fmt = tgz ” > /backup/$ (date +%d-%m-%Y). $i.tgz
done


Salve esse conteúdo no arquivo /bin/backupindzimbra.sh, altere as permissões e os donos para então executar:

chown zimbra.zimbra /bin/backupindzimbra.sh

chmod 755 /bin/backupindzimbra.sh


Neste caso, foi executado o backup e encontrado 3 caixas de email, para deixar permanente, adicione ao crontab, no arquivo /etc/crontab, como exemplo abaixo, executando uma vez por semana, no sábado, as 12:00:

00 12 * * 6 zimbra /bin/backupindzimbra.sh

Backup e Restore a quente

Por padrão o Zimbra Open não oferece ferramenta para backup e restore a quente, sem parar o próprio serviço do Zimbra, diferente da Edição Network.

Mas existem muitas contribuições feitas pela comunidade, que permite que seja feito tal backup, mesmo no Open.

Uma ferramenta dessa foi concebida pela 4Linux chamada zmbkpose.

O zmbkpose é um shell script que utiliza o utilitário curl para trazer o conteúdo das caixas postais, via HTTP para um arquivo compactado que pode ser utilizado para restore.


Para instalação devemos seguir os passos abaixo:


1)      Instalar dependências : apt – get install curl ldap-utils unzip git –y

2)      Download do aplicativo no diretório /usr/src:

cd /usr/src
git clone git://github.com/bggo/Zmbkpose.git
cd Zmbkpose
./install
3)      Será solicitado a senha do administrador do zimbra, e posteriormente a informação que o software está instalado:

Altere dentro do arquivo /etc/zmbkpose.conf, o email de noitificação em EMAIL_NOTIFY, eo WORKDIR para informa o destino do backup e por fim o endereço LDAP do Servidor Zimbra em LDAPMASTERSERVER:

 

EMAIL_NOTIFY=andre@dominiolinux.net

WORKDIR=/backup

LDAPMASTERSERVER=ldap://localhost:389


Com ele já instalado, agora podemos fazer nossos backups e restores a quente.

Com ele podemos realizar os seguintes backups:

Backup Completo de todas as contas Backup Completo de uma conta Backup Incremental de todas as contas Backup Incremental de uma conta


Para realizarmos backup Full de todas as contas executamos o comando abaixo:


zmbkpose –f


Para backup full de um usuário:

zmbkpose –f andre@dominiolinux.net


Para backup incremental de todas as contas:


zmbkpose –i


E por fim para backup incremental de uma conta:

zmbkpose –i andre@dominiolinux.net


Com esses comandos simples podemos fazer backup full ou incremental de todas as contas ou de uma única conta.

Quando criamos um backup, é gerado um valor relacionado com a sessão, data do dia e com o prefixo full ou inc, que gerará uma pasta, onde serão feitos os backups, exemplo:


full-20141023010230

inc-20141023010231


Esse também será o valor que deverá ser passado em caso de restore.

Podemos consultar as sessões já realizadas através da opção –l. Veja abaixo:

zmbkpose –l


full-20141023010230 

inc-20141023010231


O processo de restauração é bem simples, usando a opção –r para fazer a restauração de um email, ou vários , separados por vírgula. Mas o valor da sessão deverá ser informada. Veja abaixo dois exemplos, onde restauramos a conta de um e abaixo de dois usuários:


zmbkpose –r andre@dominiolinux.net full-20141023010230

zmbkpose –r andre@dominiolinux.net,caio@dominiolinux.net full-20141023010230


Uma outra opção muito interessante, é restaurar um backup de uma conta removida. Para tal usamos a opção –restoreAccount, exemplo:

zmbkpose -restoreAccount andre@dominiolinux.net

Neste caso do restore da Conta não é necessário a sessão.

Obs: Em relação a agendamento de Backup, use o crontab em /etc/crontab. Suas opções sintaxe é:

Minuto Hora DiadoMes Mês DiadaSemana usuário script

Onde: Minuto de 00 à 59, Hora de 00 à 23, Dia do Mês de 1 a 31, Mês de 1 à 12 e Dia da Semana de 0 à 7, onde 0 e 7 são domingo, 1 segunda, 2 terça, e assim sucessivamente.

No Crontab, usamos Dia da Semana, ou Dia do Mês e não os dois ao mesmo tempo. Um exemplo Simples , seria por exemplo um script para rodar o backup incremental diário e um Full aos sábados.

00 00 * * 1-5 zimbra /bin/zmbkpose –i

00 00 * * 6 zimbra /bin/zmbkpose –f

Lembre-se que sempre o comando zmbkpose, deverá ser executado pelo usuário zimbra.