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
Postar um comentário