zimbraBackup.sh
#!/bin/bash
# Desenvolvido por Silvio Garbes em 06/04/2016
# Atualizado em 08/04/2016
# Crontab
# 30 19 * * * sh /empresa/zimbraBackup.sh
# ----------------- #
# Montando particao #
# ----------------- #
mount 192.168.2.25:/backup/zimbra /mnt/backup/
PATH=$PATH:$HOME/bin:/opt/zimbra/bin
export PATH
ZBACKUP=/mnt/backup
limiteProcessosParalelos=5
# ------------------------------------------- #
# Apagando arquivos antigos (mais de 1 dias). #
# ------------------------------------------- #
find $ZBACKUP -mtime +1 -exec rm -rf {} \;
# --------------------- #
# Backup Banco de dados #
# --------------------- #
SQLPASSWD=`zmlocalconfig -s mysql_root_password`
SQLPASSWD=${SQLPASSWD##*=}
# Backup base Zimbra
echo "Fazendo backup banco zimbra"
/opt/zimbra/mysql/bin/mysqldump zimbra -S /opt/zimbra/db/mysql.sock -u root --password="`echo $SQLPASSWD`" | bzip2 > $ZBACKUP/backupBanco_zimbra_`date "+%Y%m%d-%H%M"`.bz2
# Backup base Mailboxs
function fazBackupBanco {
echo "Fazendo backup banco "$1
/opt/zimbra/mysql/bin/mysqldump $1 -S /opt/zimbra/db/mysql.sock -u root --password="`echo $SQLPASSWD`" | bzip2 > $ZBACKUP/backupBanco_"$1"_`date "+%Y%m%d-%H%M"`.bz2 &
}
for db in `/opt/zimbra/bin/mysql -NB -e 'show databases' | grep mbox`
do
while true
do
processosParalelos=`ps -ef | grep -c mysqldump`
if [ "$processosParalelos" -le "$limiteProcessosParalelos" ]
then
break
else
sleep 10
fi
done
fazBackupBanco $db
sleep 2
done
# ---------------------- #
# Backup de configuracao #
# ---------------------- #
echo "Fazendo backup configuracoes"
tar cvfz $ZBACKUP/backupConfiguracao_`date "+%Y%m%d-%H%M"`.tar.gz /opt/zimbra/conf
# ---------------------------- #
# Backup lista de distribuicao #
# ---------------------------- #
function fazBackupLista {
echo "Fazendo backup lista "$1
/opt/zimbra/bin/zmprov getDistributionListMembership $1 | bzip2 > $ZBACKUP/backupLista_"$1"_`date "+%Y%m%d-%H%M"`.bz2 &
}
for i in `/opt/zimbra/bin/zmprov getAllDistributionLists`
do
while true
do
processosParalelos=`ps -ef | grep -c getDistributionListMembership`
if [ "$processosParalelos" -le "$limiteProcessosParalelos" ]
then
break
else
sleep 10
fi
done
fazBackupLista $i
sleep 2
done
# ----------------- #
# Backup de e-mails #
# ----------------- #
function fazBackupMail {
echo "Fazendo backup mail "$1
/opt/zimbra/bin/zmmailbox -z -m $1 getRestURL "//?fmt=tgz" > $ZBACKUP/backupMail_"$1"_`date "+%Y%m%d-%H%M"`.tgz &
}
for mbox in `/opt/zimbra/bin/zmprov -l gaa`
do
while true
do
processosParalelos=`ps -ef | grep -c ZMailboxUtil`
if [ "$processosParalelos" -le "$limiteProcessosParalelos" ]
then
break
else
sleep 10
fi
done
fazBackupMail $mbox
sleep 2
done
# -------------------- #
# Desmontando particao #
# -------------------- #
umount /mnt/backup