Backup do Expresso
23 de Fevereiro de 2010, 0:00 - sem comentários aindaPré-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."
Alterar Senha do Usuario Bacula no Mysql
10 de Fevereiro de 2010, 0:00 - sem comentários aindaVocê pode alterar a senha do usuário “bacula” no banco Mysql (aquela mesma senha que o Bacula utiliza no recurso “Catalog” do bacula-dir.conf), de duas maneiras:
Na console do mysql:
mysql> GRANT USAGE ON *.* TO bacula@”%” IDENTIFIED BY ‘NOVASENHA‘;
Ou no shell:
shell> mysqladmin -u bacula password NOVASENHA
Obviamente, NOVASENHA deverá ser a senha que deseja configurar.
Abraços!
Backup do “389 Directory Server” (FedoraDS e RHDS)
9 de Fevereiro de 2010, 0:00 - sem comentários ainda“Serviço de Diretório 389” é o novo nome do “Fedora Directory Server”; “Red Hat Directory Server” é a versão certificada da RedHat, embora os dois compartilhem do mesmo código. Para fazer seu backup é relativamente simples:
1) No servidor que roda o Serviço de Diretório 389, deverá haver o script (ex.: /etc/bacula/scripts/make_389_backup):
#!/bin/sh
# execute a dump of 389
/usr/lib/dirsrv/slapd-soasi/db2bak /var/lib/dirsrv/slapd-soasi/bak/dump
# chmod 755 /etc/bacula/scripts/make_389_backup
Modifique “slapd-soasi” por “slapd-xxx” onde “xxx” será o nome de sua instância slapd. Este script criará um diretório para dump bem como arquivos (que contém o conteúdo do diretório em si): /var/lib/dirsrv/slapd-soasi/bak/dump
2) Ainda no servidor que hoospeda o serviço de diretório, crie o seguinte script (/etc/bacula/scripts/delete_389_backup):
#!/bin/sh
# remove dump
rm -rf /var/lib/dirsrv/slapd-soasi/bak/dump
# chmod 755 /etc/bacula/scripts/delete_389_backup
Novamente, necessário modificar o “slapd-soasi” por “slapd-xxx” onde “xxx” será o nome de sua instância slapd.
3) No bacula-dir.conf (servidor Bacula) necessário configurar os scripts pré e pós job de backup. Sseria algo parecido com o seguinte:
Job {
Name = "389"
Client = 389-fd
Write Bootstrap = "/var/lib/bacula/389.bsr"
**FileSet = "389"**
JobDefs = "default"
# create 389's dump
**Client Run Before Job = "/etc/bacula/scripts/make_389_backup"**
# delete the dump
**Client Run After Job = "/etc/bacula/scripts/delete_389_backup"**
}
O “FileSet” do respectivo job deve conter:
File = /var/lib/dirsrv/slapd-soasi/bak/dump
[Necessário modificar o “slapd-soasi” por “slapd-xxx" onde “xxx” será o nome de sua instância slapd.]
Fonte: http://wiki.bacula.org/doku.php?id=application_specific_backups:389
Backup OpenLDAP com o Bacula
9 de Fevereiro de 2010, 0:00 - sem comentários aindaSe você tem apenas uma configuração mais simples, utilizando apenas um backend, o comando slapcat irá produzir um dump completo para backup:
slapcat | gzip > backup.ldif
Para cenários mais elaborados (com múltiplos backends), o slapcat precisará do DN (distinguish name) de cada um dos backends locais.
Este script fará todo o trabalho:
#!/bin/bash
SLAPD_CONF=/etc/ldap/slapd.conf
# where to put files
BACKUP_PATH="/usr/local/backup/ldap_dumps"
# set more secure umask
umask 0027
if [ ! -r "${SLAPD_CONF}" ]; then
echo "Error: \"${SLAPD_CONF}\" cannot be read." >&2
exit 1
fi
dumpSuffix() {
suffix=${1//\"/}
number=$2
echo -n " - ${suffix}"
slapcat -b "${suffix}" | bzip2 > ${BACKUP_PATH}/dump.db${number}.ldif.bz2
echo "."
}
echo "searching for suffixes to dump"
# open slapd conf file and read line by line
dbNum=0
exec 3<${SLAPD_CONF}
while read line <&3; do # search for database declaration if echo $line | grep -e '^database' > /dev/null; then
(( dbNum++ ))
database=`echo $line | awk '{print $2}'`
# lets see if it's a bdb/hdb database (I don't care about anything else...)
if [ "$database" == "bdb" ] || [ "$database" == "hdb"]; then
# searching for suffix now
while [ -z $suffix ]; do
if read line <&3; then if echo $line | grep -e '^suffix' > /dev/null; then
# found suffix, now we can dump it somewhere
suffix=`echo $line | awk '{print $2}'`
dumpSuffix $suffix $dbNum
fi
fi
done
suffix=""
fi
fi
done
exec 3>&- # close file descriptor
exit 0
Fonte: http://wiki.bacula.org/doku.php?id=application_specific_backups:openldap
Compilando apenas o file daemon, storage daemon e o director.
9 de Fevereiro de 2010, 0:00 - sem comentários aindaAs opções de compilação, para seleção dos daemons a serem instalados, são as seguintes:
–enable-client-only (apenas compila o File Daemon)
–enable-build-dird (também compilará o Director)
–enable-build-stored (também compilará o Storage Daemon)