Script de criação de backup de contas zimbra

SSenhores,

 

boa tarde, hoje estarei mostrando para vocês como criar backup full das contas de email do servidor de email Zimbra, Espero que aproveitem:

##################################################

 #!/bin/bash

ZMAILBOXCMD="/opt/zimbra/bin/zmmailbox"
DEST="/opt/zimbra/backup"
FILEOK="/opt/zimbra/backup/prontos"
saida="/root/scripts/export/saida.txt"
echo "" > $saida
#armazenar arquivos contas com uso:
#su - zimbra -c "/opt/zimbra/bin/zmprov gqu `zmhostname` | awk '{print $3,$1}' | grep -v ^0 | awk '{print $2}' "  > contas

for mailbox in `cat contas`;
do
echo "
$(date)
Servidor: <ip-servidor>
Iniciando exportação de arquivo TGZ do usuário: $mailbox
" > $saida
/root/scripts/export/telegram.py

su - zimbra -c "$ZMAILBOXCMD -z -m ${mailbox} -t 0 getRestURL \"//?fmt=tgz&query=is:anywhere\" " > $DEST/${mailbox}.tgz
wait
md5sum $DEST/${mailbox}.tgz > $DEST/${mailbox}.tgz.md5
wait
echo "\"$(date)\",\"ipaddress\",\"${mailbox}\""
mv $DEST/${mailbox}.tgz $DEST/${mailbox}.tgz.md5 $FILEOK
wait
done


############################################################

Este script acima ,você irá salvar em um arquivo com qualquer com permissão de execução e permissão de root.



Script e movimentação de arquivos

Nessa etapa mostraremos para vocês como enviar os arquivos, ou seja, os arquivos que já concluíram o backup, o comando "lsof" nos ajuda a listar somente os arquivos que já foram concluídos a sua criação ou cópia.


Segue o script de movimentação:

###################################################

#!/bin/bash

#BASE_PATH => Diretório onde contém os arquivos .tgz a serem enviados
BASE_PATH=/backup/prontos
DEST_PATH=/export/backup/prioridades/recebidos
ENVIADOS=${BASE_PATH}/enviados
PID_FILE=/tmp/pid_import.$$
SLEEP=120

#Verifica se o diretorio existe:
[ -d "${ENVIADOS}" ] || mkdir -p "${ENVIADOS}"

cd $BASE_PATH

LOG(){
    echo -e "$(date "+%D %T") $*"
}

SAIR(){
    LOG "Fim"
    RET=$(rm -vf $PID_FILE)
    LOG "$RET"
    exit
}

>$PID_FILE
LOG "Início PID: $PID_FILE"
cd ${BASE_PATH}
while [ -e "$PID_FILE" ];do
    LOG "Atualizando contas."
    DUMPS=$(ls -tr *@* 2>/dev/null)
    if [ -z "$DUMPS" ]; then
        LOG "Nenhum arquivo .tgz no diretório corrente."
    else
        for DUMP in $DUMPS;do
            LOG "Verificando arquivo $DUMP."
            [ -e "$PID_FILE" ] || SAIR
            lsof $DUMP
            if [ $? -ne 0 ] ;then
                let "contr=$contr + 1"
                FILE_SIZE=$(stat -c%s $DUMP)
                let "FILE_SIZE_MB = $FILE_SIZE / 1048576"
                LOG "Arquivo $contr $DUMP com ${FILE_SIZE_MB}Mb"
                scp $DUMP root@<dst-ip>:$DEST_PATH
                if [ $? -eq 0 ]; then
                mv $DUMP ${ENVIADOS}
                LOG "Arquivo $DUMP movido para pasta enviados!"
                fi
            else
                LOG "Arquivo $DUMP não está pronto para importar."
            fi
        done
    fi
    [ -e "$PID_FILE" ] || SAIR
    LOG "Sleeping... ${SLEEP}s"
    #SAIR
    sleep $SLEEP
done
SAIR


Comentários

Postagens mais visitadas deste blog

PYTHON - ENVIAR MENSAGEM VIA TELEGRAM

Dicas Zimbra

ZIMBRA - BACKUP CONTAS DE EMAILS FECHADAS A MAIS DE 90 DIAS