Backup com Shell Script
Publicado por Marcelo Viana (última atualização em 27/12/2013)
[ Hits: 17.616 ]
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 de diretórios do sistema Linux
Backup e envio do arquivo + md5sum para o FTP da escolha do usuário
Backups automáticos de rádios Intelbras APC5
KDE Plasma - porque pode ser a melhor opção de interface gráfica
Gentoo: detectando impressoras de rede e como fixar uma impressora por IP
Como o GNOME conseguiu o feito de ser preterido por outras interfaces gráficas
Por que sua empresa precisa de uma PKI (e como automatizar EMISSÕES de certificados via Web API)
Instalando NoMachine no Gentoo com Systemd (acesso Remoto em LAN)
Gentoo: Trocando wpa_supplicant pelo iwd no NetworkManager (Systemd)
Instalar Linux em notebook Sony Vaio VPCEG13EB (10)
Vou destruir sua infância:) (6)
Quando vocês pararam de testar distros? (24)









