#!/bin/bash #DEPENDENCIAS #lftp -- yum --disablerepo=\* --enablerepo=base install lftp #mount.cifs #LISTAR COMPARTILHAMENTOS #smbclient -L 192.168.115.6 -U administrador #CONFIGURACAO CRONTAB #BKP SIMPLES #00 05 * * * root bash /hdaux/utilitarios/scripts/bkp_simplesip.sh #PARAMETROS/CONFIGURACAO SERVIDOR="" USUARIO="" SENHA="" DIR_DESTINO_AUDIOS="backups_simplesip/audios" DIR_DESTINO_CONFIGS="backups_simplesip/configs" ATIVA_AUDIOS="1" # 0 = DESATIVADO / 1 = ATIVADO ATIVA_CONFIGS="1" # 0 = DESATIVADO / 1 = ATIVADO #OPCOES DE CONEXAO #FTP #MAPEAMENTO DE REDE / COMPARTILHAMENTO DE PASTAS FTP="1" # 0 = DESATIVADO / 1 = ATIVADO COMPARTILHAMENTO_REDE="0" # 0 = DESATIVADO / 1 = ATIVADO #PARA BACKUP ATRAVES DE COMPARTILHAMENTO DE PASTAS (WINDOWS, STORAGE DE REDE) COMPARTILHAMENTO="" #VARIAVEIS EMAIL="meajuda@simplesip.com.br" FILTRO_AUDIO_DATA="$1" #EX: 2020-02-10 - $(date +\%F --date='yesterday') DIR_BACKUP_RAIZ="/hdaux" [ -d /hd2 ] && DIR_BACKUP_RAIZ="/hd2" CLIENTE=$([ -e /hdaux/cliente ] && cat /hdaux/cliente) diasemana=$(date +%A) case $diasemana in Monday) diasemana=segunda-feira ;; Tuesday) diasemana=terca-feira ;; Wednesday) diasemana=quarta-feira ;; Thursday) diasemana=quinta-feira ;; Friday) diasemana=sexta-feira ;; Saturday) diasemana=sabado ;; Sunday) diasemana=domingo ;; esac #Verifica se o script esta rodando if [ -e /tmp/bkp_simplesip.pid ] ; then echo "Script em Excecucao..." exit fi [ -z "$DIR_DESTINO_AUDIOS" ] && echo "Diretorio para armazenamento de audios invalido!" && exit 1 [ -z "$DIR_DESTINO_CONFIGS" ] && echo "Diretorio para armazenamento de configuracoes invalido!" && exit 1 #Gera PID do scritp echo $$ > /tmp/bkp_simplesip.pid cd /tmp/ #Armazenando a data e hora em uma variavel declare -x data=$(date +%F-%H-%M-%S) #Criando a pasta para armazenar o backup: mkdir -p $DIR_BACKUP_RAIZ/$data DIR_BACKUP="$DIR_BACKUP_RAIZ/$data" backup_config() { true } backup_audios() { clear #echo "Verificando arquivos de audio (gravacoes)" ARQUIVOS=$(ls -ltr --time-style=+%F-%T /var/spool/asterisk/monitor/ | grep -v "\-rwxr-x---" | grep -i wav | grep "$FILTRO_AUDIO_DATA" | grep -v "$(date +%F)") if ! [ -z "$ARQUIVOS" ] ; then mkdir -p $DIR_BACKUP/$DIR_DESTINO_AUDIOS CONT=1 TOTAL=$(echo "$ARQUIVOS" | wc -l) echo "$ARQUIVOS" | while read LINHA; do #echo "Copiando arquivo $CONT de $TOTAL" #echo "" ANO=$(echo "$LINHA" | awk {'print $6'} | cut -f 1 -d "-") MES=$(echo "$LINHA" | awk {'print $6'} | cut -f 2 -d "-") DIA=$(echo "$LINHA" | awk {'print $6'} | cut -f 3 -d "-") AUDIO=$(echo "$LINHA" | awk {'print $7'}) if ! [ -d $DIR_BACKUP/$DIR_DESTINO_AUDIOS/$ANO ] ; then mkdir -p $DIR_BACKUP/$DIR_DESTINO_AUDIOS/$ANO fi if ! [ -d $DIR_BACKUP/$DIR_DESTINO_AUDIOS/$ANO/$MES ] ; then mkdir -p $DIR_BACKUP/$DIR_DESTINO_AUDIOS/$ANO/$MES fi if ! [ -d $DIR_BACKUP/$DIR_DESTINO_AUDIOS/$ANO/$MES/$DIA ] ; then mkdir -p $DIR_BACKUP/$DIR_DESTINO_AUDIOS/$ANO/$MES/$DIA fi /bin/cp -Rapf /var/spool/asterisk/monitor/$AUDIO $DIR_BACKUP/$DIR_DESTINO_AUDIOS/$ANO/$MES/$DIA/ RESULT_CP=$? if [ "$RESULT_CP" != "0" ] ; then echo -e "Subject: FALHA AO SEPARAR OS ARQUIVOS DE AUDIO: $SERVIDOR - CLIENTE:$CLIENTE" | msmtp -t $EMAIL cd /tmp/ #/bin/rm -rf $DIR_BACKUP #/bin/rm -rf /tmp/bkp_simplesip.pid return 1 fi CONT=$(($CONT + 1)) done return 0 else return 1 fi } ftp() { if [ "$ATIVA_AUDIOS" == "1" ] ; then backup_audios if [ "$?" == "0" ] ; then cd $DIR_BACKUP/$DIR_DESTINO_AUDIOS/ SUBPASTAS=$(ls -1d */*/*) for PASTA_DIA in $SUBPASTAS ; do lftp -u $USUARIO,$SENHA $SERVIDOR << EOF mput -O $DIR_DESTINO_AUDIOS -cd $PASTA_DIA/* bye EOF RESULT_FTP=$? if [ "$RESULT_FTP" != "0" ] ; then echo -e "Subject: FALHA AO COPIAR BACKUP DOS AUDIOS VIA FTP: $SERVIDOR - CLIENTE:$CLIENTE" | msmtp -t $EMAIL cd /tmp/ /bin/rm -rf $DIR_BACKUP /bin/rm -rf /tmp/bkp_simplesip.pid exit 1 else ls -1 $PASTA_DIA | while read AUDIO_PERMISSAO ; do chmod 0750 /var/spool/asterisk/monitor/$AUDIO_PERMISSAO #echo "AJUSTANDO PERMISSAO $AUDIO_PERMISSAO" done fi done fi fi if [ "$ATIVA_CONFIGS" == "1" ] ; then cd $DIR_BACKUP_RAIZ/ lftp -u $USUARIO,$SENHA $SERVIDOR << EOF rm -rf $DIR_DESTINO_CONFIGS/backup/$diasemana.tar.gz mput -O $DIR_DESTINO_CONFIGS -cd backup/*.tar.gz bye EOF RESULT_FTP_CONFIGS=$? if [ "$RESULT_FTP_CONFIGS" != "0" ] ; then echo -e "Subject: FALHA AO COPIAR BACKUP DE CONFIGURACAO VIA FTP: $SERVIDOR - CLIENTE:$CLIENTE" | msmtp -t $EMAIL cd /tmp/ /bin/rm -rf $DIR_BACKUP /bin/rm -rf /tmp/bkp_simplesip.pid exit 1 fi fi cd /tmp/ /bin/rm -rf $DIR_BACKUP } compartilhamento_rede() { if ! [ -d /mnt/$data ] ; then mkdir -p /mnt/$data fi mount.cifs //$SERVIDOR/$COMPARTILHAMENTO /mnt/$data -o user=$USUARIO,password=$SENHA,file_mode=0777,dir_mode=0777,vers=2.0 RESULT_MOUNT=$? if [ "$RESULT_MOUNT" != "0" ] ; then echo -e "Subject: FALHA AO MONTAR COMPARTILHAMENTO: $SERVIDOR - CLIENTE:$CLIENTE" | msmtp -t $EMAIL cd /tmp/ /bin/rm -rf $DIR_BACKUP /bin/rm -rf /mnt/$data /bin/rm -rf /tmp/bkp_simplesip.pid exit 1 else DIR_BACKUP="/mnt/$data" fi if [ "$ATIVA_AUDIOS" == "1" ] ; then backup_audios if [ "$?" == "0" ] ; then cd $DIR_BACKUP/$DIR_DESTINO_AUDIOS/ SUBPASTAS=$(ls -1d */*/*) for PASTA_DIA in $SUBPASTAS ; do ls -1 $PASTA_DIA | while read AUDIO_PERMISSAO ; do chmod 0750 /var/spool/asterisk/monitor/$AUDIO_PERMISSAO done done fi fi if [ "$ATIVA_CONFIGS" == "1" ] ; then if ! [ -d $DIR_BACKUP/$DIR_DESTINO_CONFIGS ] ; then mkdir -p $DIR_BACKUP/$DIR_DESTINO_CONFIGS fi cd /tmp/ rsync -zap $DIR_BACKUP_RAIZ/backup/*.tar.gz $DIR_BACKUP/$DIR_DESTINO_CONFIGS/ RESULT_RSYNC=$? if [ "$RESULT_RSYNC" != "0" ] ; then echo -e "Subject: FALHA AO COPIAR BACKUP DE CONFIGURACAO: $SERVIDOR - CLIENTE:$CLIENTE" | msmtp -t $EMAIL cd /tmp/ /bin/rm -rf $DIR_BACKUP /bin/rm -rf /mnt/$data /bin/rm -rf /tmp/bkp_simplesip.pid exit 1 fi fi cd /tmp/ umount /mnt/$data /bin/rm -rf /mnt/$data } [ "$FTP" == "1" ] && ftp [ "$COMPARTILHAMENTO_REDE" == "1" ] && compartilhamento_rede cd /tmp/ /bin/rm -rf /tmp/bkp_simplesip.pid