Pré-script para Backup do Expresso (ClientRunBeforeJob):
O seguinte script irá preparar o backup do Banco de dados, Base do LDAP, “Cyrus” e Emails do Expresso, para que então o Bacula possa fazer a cópia dos arquivos gerados, de maneira mais confiável.
Observe que, como o Bacula faz backup de arquivos abertos, estes são procedimentos realizados, apenas, para garantir a integridade das cópias de segurança.
Recomenda-se o backup de todo o / com o Bacula (exceto as pastas obviamente descartáveis: /proc, /tmp, etc.), para fins de recuperação de desastre em caso de perda completa do Servidor.
Os procedimentos abaixo estão de acordo com a Documentação Oficial da Ferramenta: “Procedimento de Backup do Expresso: Como fazer? >>rotinadebackup.pdf
#
# Script para fazer backup do Expresso Mail
#
# Arquivo: bak-expresso.sh
#
# Ele faz backup de:
# * Banco de dados
# * Base do LDAP
# * Cyrus
# * Emails
#
# Ultima modificacao: 17/02/2009
#
# Versao 1: Versao Inicial
#
# Autor: Hugo Doria (hugo@archlinux.org)
# Alteracoes: Antonio Ignacio Gloria (antonio.gloria@yahoo.com.br)
#
DIR_BACKUP=”/root/backups/”
USUARIO_BANCO=”postgres”
ARQ_LOG=”backup.log”
if [ ! -d ${DIR_BACKUP} ]; then
mkdir -p ${DIR_BACKUP}
fi
cd ${DIR_BACKUP} || exit 1
echo “HISTORICO da COPIA de seguranca do EXPRESSO LIVRE – DATA INICIAL:” > ${ARQ_LOG}
date >> ${ARQ_LOG}
# Backup do postgres
echo “Fazendo o backup do banco …n” >> ${ARQ_LOG}
pg_dump -o -U ${USUARIO_BANCO} expresso > bkp-banco.dump
# Backup do ldap
echo “Fazendo o backup do ldap …n” >> ${ARQ_LOG}
slapcat > bkp-ldap.ldif
# Backup do cyrus
echo “Fazendo o backup do cyrus …n” >> ${ARQ_LOG}
# “Parando o cyrus …”
/etc/init.d/cyrus2.2 stop >> ${ARQ_LOG}
if [ -d /var/spool/cyrus ]; then
echo “Fazendo o dump da estrutura do cyrus …” >> ${ARQ_LOG}
su – cyrus -c “/usr/sbin/ctl_mboxlist -d > bkp-cyrus.dump”
mv /var/spool/cyrus/bkp-cyrus.dump .
echo “Compactando as mensagens …” >> ${ARQ_LOG}
tar -jcvf bkp-mail.tar.bz2 /var/spool/cyrus >> ${ARQ_LOG}
fi
if [ -d /var/lib/cyrus ]; then
echo “Compactando o /var/lib/cyrus …” >> ${ARQ_LOG}
tar -jcvf bkp-cyrusvarlib.tar.bz2 /var/lib/cyrus >> ${ARQ_LOG}
fi
/etc/init.d/cyrus2.2 start >> ${ARQ_LOG}
echo “Backup finalizado e salvo em ${DIR_BACKUP}” >> ${ARQ_LOG}
Fonte: http://www.expressolivre.org/html/modules/newbb/viewtopic.php?topic_id=1012
Autor: Hugo Doria (hugo@archlinux.org)
Procedimentos de Restauração:
Os procedimentos alinhados no script podem ser executados individualmente (para a restauração de apenas uma aplicação – ex.: banco-de-dados), ou para a recuperação integral do Servidor Expresso.
No caso da Restauração Integral, recomenda-se:
1. Instalação dos softwares e dependências necessários.
2. Execução do Shell-Script Abaixo*.
3. Pode ser necessário um update no Banco e reinstalação de aplicaçõs, através do: http://seuexpresso/setup.
4. Verificar se as quotas foram restauradas. Caso contrário, as reestabeleça (se alguém conhecer um script para backup das quotas, favor enviar).
5. Depois das quotas refeitas, é necessário executar o comando cyrquota -f para todos.
6. Após o restore das mensagens, pode ser necesário executar o comando “cyrreconstruct -rf”. Um detalhe importantíssimo, as flags das mensagens são guardadas no /var/lib/cyrus/user, então este diretório precisa ser recuperado também, e para que as flags das mensagens não se percam, NUNCA, NUNCA utilize o parâmetro -x no comando cyrreconstruct.
Segue o shell-script de restauração (passo 2)*:
#!/bin/bash
#
# rest-expresso.sh
#
# Script para recuperar (restore) o backup do Expresso Mail
# Conforme escrito por Hudo Doria em 13/11/2008 em bkp-espresso.sh
#
# Prevendo apenas a totalidade das copias de:
# * Banco de dados
# * Base do LDAP
# * Cyrus
# * Emails
#
# Ultima modificacao: 18/02/2009
#
# Versao1 : Versao Inicial
#
# Autor: Antonio Ignacio Gloria (antonio.gloria@yahoo.com.br)
#
DIR_BACKUP="/root/backups/"
USUARIO_BANCO="postgres"
cd ${DIR_BACKUP} || exit 1
echo "Restaurando a base do Expresso..."
psql -U ${USUARIO_BANCO} -c "DROP DATABASE expresso;"
psql -U ${USUARIO_BANCO} -c "CREATE DATABASE expresso with ENCODING='latin1';"
psql -U postgres expresso <${DIR_BACKUP}bkp-banco.dump
echo "Restaurando o LDAP - demora um pouco - aguarde"
/etc/init.d/slapd stop
rm -rf /var/lib/ldap/*
echo "Esta etapa nao gera log - aguarde ..."
slapadd -l ${DIR_BACKUP}bkp-ldap.ldif
chown -R openldap /var/lib/ldap/
/etc/init.d/slapd start
if [ -f ${DIR_BACKUP}bkp-cyrus.dump ];
then
echo "Restaurando o Backup do CYRUS"
su - cyrus -c "/usr/sbin/ctl_mboxlist -u < ${DIR_BACKUP}bkp-cyrus.dump"
echo "Descompactando as mensagens - demora mais um pouco - aguarde !"
echo "Acompanhe o log crescente no arquivo /var/lib/cyrus/log/mail.log"
cd /
tar -jxvf ${DIR_BACKUP}bkp-mail.tar.bz2 > /var/lib/cyrus/log/mail.log
fi
if [ -f ${DIR_BACKUP}bkp-cyrusvarlib.tar.bz2 ];
then
echo "Descompactando o diretorio /var/lib/cyrus - demora - aguarde !!"
echo "Acompanhe o log crescente no arquivo /var/lib/cyrus/log/varlib.log"
cd /
tar -jxvf ${DIR_BACKUP}bkp-cyrusvarlib.tar.bz2 > /var/lib/cyrus/log/varlib.log
chown -R cyrus.mail /var/lib/cyrus
fi
echo "Reconstruindo a lista de msgs dos usuarios - o que mais demora - aguarde !!!"
echo "Acompanhe o log crescente no arquivo /var/lib/cyrus/log/reconstruct.log"
su - cyrus -c "/usr/sbin/cyrreconstruct -rf user/* > /var/lib/cyrus/log/reconstruct.log"
echo "Iniciando o CYRUS"
/etc/init.d/cyrus2.2 start
echo "Recuperado o banco Expresso Livre conforme backup - Verifique."
Disponível em: Português