forked from SimplesIP/pabx-app
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
288 lines
7.1 KiB
288 lines
7.1 KiB
#!/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/ftp_simplesip.sh |
|
|
|
#PARAMETROS/CONFIGURACAO |
|
CLIENTE=$([ -e /hdaux/cliente ] && cat /hdaux/cliente) |
|
SERVIDOR="bkp.simplesip.com.br" |
|
USUARIO="simples1" |
|
SENHA="SimpleS_root" |
|
|
|
DIR_DESTINO_AUDIOS="$CLIENTE/audios" |
|
DIR_DESTINO_CONFIGS="$CLIENTE/configs" |
|
|
|
ATIVA_AUDIOS="0" # 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/ftp_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/ftp_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/ftp_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/ftp_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/ftp_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/ftp_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/ftp_simplesip.pid |
|
|
|
|