Backup com Shell Script
Publicado por Marcelo Viana (última atualização em 27/12/2013)
[ Hits: 17.565 ]
Homepage: infSite.org
Oi pessoal,
A seguir um simples e útil script para backup, com exclusão de arquivos antigos, backup completo do banco MySQL e determinadas pastas do servidor.
O que faz:
- Copia os arquivos a serem backupeados para um diretório temporário ($base_tmp). Estes arquivos são mantidos por 5 dias.
- Logo após, no final do script, a base principal ($base_principal) é atualizada com os arquivos do diretório temporário. Os arquivos da base principal são mantidos por 10 dias.
- O backup das configurações do servidor são mantidos na base principal ($base_principal) por 360 dias, por serem arquivos pequenos.
# Paz.
# É o Senhor que mostra os caminhos.
#
#!bin/bash
#
# nomeclaturas para arquivos backupeados
mysql="mysql-`date +%d-%m-%Y`.databases.db"
www="www-`date +%d-%m-%Y`.tar.gz"
confs="confs-`date +%d-%m-%Y`.tar.gz"
#
# diretórios para quardar os backups
base_tmp="/backup/backups"
base_principal="/sdc5/Web-Sites/backup/backups"
#
# quantidade de dias para manter os arquivos já backupeados
dias1=5
dias2=10
dias3=360
#
# diretórios a ser backupeados
bkp1="/var/www/*"
bkp2="/etc/squid/*"
bkp3="/etc/proftpd/*"
bkp4="/etc/network/*"
bkp5="/etc/dhcp/*"
bkp6="/etc/bind/*"
bkp7="/etc/rotinas/*"
#
# usuário e senha do banco myslql
user_mysql="root"
pass_mysql="senha"
#
#
echo "Excluindo arquivos da base temporária com mais de $dias1 dias..."
find $base_tmp -ctime +$dias1 -type f -exec rm -rvf {} \;
echo "Excluindo arquivos da base principal com mais de $dias2 dias..."
find $base_principal/mysql/ -ctime +$dias2 -name "*.db" -exec rm -rvf {} \;
find $base_principal/sites/ -ctime +$dias2 -name "*.tar.gz" -exec rm -rvf {} \;
echo "Excluindo arquivos de configurações com mais de $dias3 dias..."
find $base_principal/confs/ -ctime +$dias3 -name "*.tar.gz" -exec rm -rvf {} \;
#
echo "Executando backup do banco mysql..."
mysqldump -u$user_mysql -p$pass_mysql --all-databases > $base_tmp/mysql/$mysql
echo "Arquivo $mysql criado!"
#
echo "Executando backup dos sites..."
tar -zcPf $base_tmp/sites/$www $bkp1
echo "Arquivo $www criado!"
#
echo "Executando backup das configurações do sistema..."
tar -zcPf $base_tmp/confs/squid_$confs $bkp2
tar -zcPf $base_tmp/confs/proftpd_$confs $bkp3
tar -zcPf $base_tmp/confs/network_$confs $bkp4
tar -zcPf $base_tmp/confs/dhcp_$confs $bkp5
tar -zcPf $base_tmp/confs/bind_$confs $bkp6
tar -zcPf $base_tmp/confs/rotinas_$confs $bkp7
#
echo "Atualizando base principal de backup '$base_principal'..."
cp -rvf $base_tmp/* $base_principal
echo "ok!"
# É o Senhor que mostra os caminhos. Agradeço por me ajudar através de tantos exemplos.
# E que bom existe o vivaolinux!
# infsite.org
Backup utilizando rsync com envio do log e informativo via e-mail
Backup de arquivos e banco de dados com envio de e-mail
Backup Máquina do Tempo com Rsync
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
Instalando partes faltantes do Plasma 6
Adicionar botão "mostrar área de trabalho" no Zorin OS
Como montar um servidor de backup no linux
Estou tentando ser legalista, mas tá complicado! (9)
espelhar monitores nao funciona (2)
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (1)









