Backup automático MySQL + arquivos do servidor web
Publicado por Antonio Schiavon (última atualização em 12/09/2012)
[ Hits: 14.332 ]
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
Alternador de wallpaper para GNOME
Download automatizado de instaladores para fileserver e afins
Verificando roteamento em vários servidores Linux
Script para Gerenciamento de Pacotes no Slackware
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como fazer a conversão binária e aplicar as restrições no Linux
Como quebrar a senha de um servidor Linux Debian
Como bloquear pendrive em uma rede Linux
Um autoinstall.yaml para Ubuntu com foco em quem vai fazer máquina virtual
Instalar GRUB sem archinstall no Arch Linux em UEFI Problemático









