Backup automático MySQL + arquivos do servidor web
Publicado por Antonio Schiavon (última atualização em 12/09/2012)
[ Hits: 14.197 ]
Homepage: fb.com/antonio.schiavon
Criei este script a partir de buscas na web e até mesmo aqui no fórum, apesar de simples, facilita muito a nossa vida em relação a automatização dos backups. Utilizo este script para fazer backup de uma aplicação web em PHP com banco de dados MySQL utilizado na empresa na qual trabalho.
Funcionamento:
O script monta um pasta remota localmente, compacta a pasta do "sistema", exporta o banco do MySQL, cria uma pasta com a data atual na pasta montada e manda tudo lá pra dentro. Tudo usando variáveis para salvar nossas vidas. :)
Para que tudo funcione automaticamente, adicione uma regra no crontab (comando crontab -e) com o seguinte comando:
mm hh * * * sh /pasta/do/script/bkp.sh
Onde:
- mm = minuto
- hh = hora
Assim ele vai rodar o script todos os dias na hora que você configurou.
NÃO ESQUECER DE CONCEDER PERMISSÃO DE EXECUÇÃO NO SCRIPT:
chmod +x /pasta/do/script/bkp.sh
Como ele monta a pasta como cifs e autentica no AD, funciona tanto com pastas compartilhadas no GNU/Linux quanto no Windows, com AD ou com Samba.
Apesar de simples, o script é funcional.
Bom proveito a todos.
#!/bin/bash ######################### # Script criado por # # Antonio Schiavon # # Em 03/09/2012 # ######################### # AQUI DEFINIMOS AS VÁRIAVEIS NECESSÁRIAS (substitua os valores pelos respectivos dados de acesso a pasta remota). data=$(date '+%d-%m-%Y') dominio="dominio.com.br" user="administrador" senha="123456" pastaremota="//servidor/pasta/" pastalocal="/mnt/servidor/pasta/" pastasistema="/var/www/sistema/" pastatemp="/var/bkp" ipbanco="localhost" userbanco="root" senhabanco="" nomedobanco="sistema" # AQUI MONTAMOS A PASTA REMOTA LOCALMENTE mount -t cifs $pastaremota $pastalocal -o domain=$dominio,username=$user,password=$pass,iocharset=utf8,file_mode=0777,dir_mode=0777 # VERIFICAMOS SE PASTA TEMPORÁRIA DO BKP EXISTE, SE NÃO CRIA E ENTRA NELA, SE SIM SÓ ENTRA. if [ -d $pastatemp ]; then cd $pastatemp else mkdir $pastatemp cd $pastatemp fi # EXTRAI DADOS DO MYSQL mysqldump --host=$ipbanco --user=$userbanco --password=$senhabanco --databases $nomedobanco > banco-$data.sql #PODE USAR '--all-databases' APÓS 'banco-$data.sql' PARA FAZER BKP DE TODOS OS BANCOS # COMPACTA ARQUIVOS DO SISTEMA zip -r fontes-$data.zip $pastasistema # CRIA PASTA DO DIA ATUAL E MOVE ARQUIVOS PARA ELA if [ -d $pastalocal/bkps_sistema ]; then mkdir $pastalocal/bkps_sistema mkdir $pastalocal/bkps_sistema/$data/ mv banco-$data.sql $pastalocal/bkps_sistema/$data/ mv fontes-$data.zip $pastalocal/bkps_sistema/$data/ else mkdir $pastalocal/bkps_gepros/$data/ mv banco-$data.sql $pastalocal/bkps_sistema/$data/ mv fontes-$data.zip $pastalocal/bkps_sistema/$data/ fi
4net.sh - Calcula velocidade de transmissão na rede
Script para pegar ip WAN para firewall com uma ou mais links de internet
DELETAR arquivos a X semanas passadas
SlackBuild para empacotar o Firefox (binário) pro Slackware
Comparação entre os escalonadores BFQ e MQ-Deadline (acesso a disco) no Arch e Debian
Conciliando o uso da ZRAM e SWAP em disco na sua máquina
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Converter os repositórios Debian para o novo formato com as chaves
Instalando Spotify no Debian 13
Realizar overclock no Miyoo Mini (plus ou normal)
Dúvidas sobre a originalidade de conteúdos online (12)
Direcionar uma URL para Outra No Mikrotik (1)
Monitoramento pfsense com zabbix (4)
Erro na inicialização do Debian como resolver (5)
linux mint reconhece microfone de lapela como fone de ouvido sem micro... (4)