Voltar Cron - 01/01/2026 Backup para o Google Drive com RClone Backup Postgres Backup Firebird Backup para o Google Drive com RClone: #!/bin/bash # ==== CONFIGURAÇÕES ==== LOCAL_DIR="/var/www/site-ribasoft/storage/app/private/api/varejo/backups" REMOTE_NAME="cli_online" REMOTE_DIR="backup_clientes" LOG_FILE="/var/log/rclone_sync.log" EMAIL="ribamarmsantos@gmail.com" HOSTNAME=$(hostname) DATA=$(date +"%Y-%m.%d_%H:%M:%S") # ==== EXECUÇÃO ==== echo "--- Iniciando Sincronização: $DATA ---" >> "$LOG_FILE" # rclone sync: Espelha a pasta local no Drive # --verbose: Detalha o processo no log # --drive-chunk-size: Melhora a performance de upload para arquivos grandes rclone sync "$LOCAL_DIR" "$REMOTE_NAME":"$REMOTE_DIR" \ --log-file="$LOG_FILE" \ --log-level INFO \ --drive-chunk-size 64M RET=$? # ==== VERIFICAÇÃO E ALERTA ==== if [ $RET -ne 0 ]; then ULTIMAS_LINHAS=$(tail -n 20 "$LOG_FILE") ( echo "To: $EMAIL" echo "Subject: ⚠️ Erro no Sync Cloud - $HOSTNAME" echo "Content-Type: text/plain; charset=UTF-8" echo echo "Ocorreu um erro ao sincronizar os backups com o Google Drive ($REMOTE_NAME)." echo "Data: $DATA" echo -e "\nÚltimas linhas do log:\n" echo "$ULTIMAS_LINHAS" ) | msmtp --from=default -t echo "Erro detectado. E-mail de alerta enviado." >> "$LOG_FILE" else echo "✅ Sincronização concluída com sucesso em $DATA" >> "$LOG_FILE" fi Backup Postgres: #!/bin/bash # ==== CONFIGURAÇÕES ==== EMAIL="ribamarmsantos@gmail.com" HOSTNAME=$(hostname) CONTAINER_NAME="laravel_ribasoft_postgres" USER_POSTGRES="ribasoft" DB_NAME="ribasoft" BACKUP_DIR="/var/www/site-ribasoft/storage/app/private/api/varejo/backups" LOG_FILE="/var/www/site-ribasoft/storage/logs/backup_postgres.log" # Formato da data para o arquivo e para o e-mail DATE_FILE=$(date +%Y.%m.%d_%H.%M.%S) DATA_LOG=$(date +'%d/%m/%Y %H:%M:%S') FILE_NAME="site_$DATE_FILE.sql.gz" mkdir -p "$BACKUP_DIR" # ==== EXECUÇÃO DO BACKUP ==== echo "[$DATA_LOG] Iniciando backup: $FILE_NAME" >> "$LOG_FILE" # Tenta rodar o pg_dump. O '2>&1' captura erros do docker/postgres para a variável ERRO_MSG=$(/usr/bin/docker exec $CONTAINER_NAME pg_dump -U $USER_POSTGRES -d $DB_NAME 2>&1 | gzip > "$BACKUP_DIR/$FILE_NAME" 2>&1) STATUS=$? # ==== VERIFICAÇÃO E ENVIO DE E-MAIL ==== if [ $STATUS -ne 0 ]; then echo "[$DATA_LOG] ERRO DETECTADO: $ERRO_MSG" >> "$LOG_FILE" # Envio do e-mail usando msmtp ( echo "To: $EMAIL" echo "Subject: 🚨 Alerta de Backup Postgres - $HOSTNAME" echo "Content-Type: text/plain; charset=UTF-8" echo echo "Atenção, o processo de backup em $HOSTNAME falhou em $DATA_LOG." echo echo "Detalhes do erro detectado:" echo "------------------------------------------------" echo "$ERRO_MSG" echo "------------------------------------------------" echo echo "Por favor, verifique o servidor e o container $CONTAINER_NAME." ) | msmtp --from=default -t echo "Alerta de erro enviado para $EMAIL." >> "$LOG_FILE" else echo "[$DATA_LOG] Backup concluído com sucesso!" >> "$LOG_FILE" fi Backup Firebird: #!/bin/bash # ==== CONFIGURAÇÕES ==== DB_DIR="/var/www/bancos" BKP_DIR="/var/www/site-ribasoft/storage/app/private/api/varejo/backups" GBAK="/usr/bin/gbak" GFIX="/usr/bin/gfix" FB_USER="SYSDBA" FB_PASS="senha" # Data no formato desejado DATA=$(date +"%Y.%m.%d_%H.%M.%S") # Garante que a pasta de backup exista mkdir -p "$BKP_DIR" EMAIL="ribamarmsantos@gmail.com" HOSTNAME=$(hostname) ERRO_DETECTADO=0 MENSAGEM="" # ==== PROCESSO ==== for DB in "$DB_DIR"/*.fdb; do # Se não existir nenhum .fdb, sai silenciosamente [ -e "$DB" ] || exit 0 # Nome do arquivo sem caminho e sem extensão NOME_BASE=$(basename "$DB" .fdb) echo "--- Iniciando verificação de: $NOME_BASE ---" # 1. VERIFICAÇÃO DE INTEGRIDADE (gfix) # -v: validate, -full: checa a estrutura completa SAIDA_GFIX=$("$GFIX" -v -full -user "$FB_USER" -password "$FB_PASS" "$DB" 2>&1) RET_GFIX=$? if [ $RET_GFIX -ne 0 ]; then ERRO_DETECTADO=1 MENSAGEM+="\n⚠️ ERRO DE INTEGRIDADE no banco: $NOME_BASE\n" MENSAGEM+="O backup foi CANCELADO para proteger a consistência.\n" MENSAGEM+="Log do GFIX:\n$SAIDA_GFIX\n" MENSAGEM+="--------------------------------------\n" continue # Pula para o próximo banco sem fazer o backup deste fi # 2. PROCESSO DE BACKUP (gbak) BKP_FILE="$BKP_DIR/${NOME_BASE}_${DATA}.fbk" SAIDA_GBAK=$("$GBAK" -b -g -v -user "$FB_USER" -password "$FB_PASS" "$DB" "$BKP_FILE" 2>&1) RET_GBAK=$? if [ $RET_GBAK -ne 0 ]; then ERRO_DETECTADO=1 MENSAGEM+="\n❌ FALHA na execução do backup: $NOME_BASE\n" MENSAGEM+="Arquivo: $DB\n" MENSAGEM+="Erro do GBAK:\n$SAIDA_GBAK\n" MENSAGEM+="--------------------------------------\n" else echo "✅ Backup de $NOME_BASE concluído com sucesso." fi done # ==== ENVIO DE E-MAIL SE HOUVER ERRO ==== if [ $ERRO_DETECTADO -eq 1 ]; then ( echo "To: $EMAIL" echo "Subject: 🚨 Alerta de Backup/Integridade Firebird - $HOSTNAME" echo "Content-Type: text/plain; charset=UTF-8" echo echo "Atenção, o processo de backup em $HOSTNAME detectou problemas em $DATA:" echo -e "$MENSAGEM" ) | msmtp --from=default -t echo "Relatório de erro enviado para $EMAIL." fi