Backup com Shell Script

Publicado por Marcelo Viana (última atualização em 27/12/2013)

[ Hits: 17.228 ]

Homepage: infSite.org

Download script.backup.v2.sh




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.
#

  



Esconder código-fonte

#!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

Scripts recomendados

Backup de MySQL para uso no cron / cPanel

Enviando e-mail localmente após o backup para monitoramento

Fazendo backup durante a semana em pastas distintas, equivalentes ao dia da semana

Ferramenta de backup do HD para dispositivos externos

Backup, compactação, verificação e transferência de arquivos


  

Comentários
[1] Comentário enviado por vitinho217 em 04/08/2014 - 10:43h

Script maneiro valeu !

[2] Comentário enviado por wagnerfs em 15/02/2015 - 21:39h

Muito bom. Parabéns e obrigado por compartilhar o conhecimento.

_________________________
Wagner F. de Souza
Graduado em Redes de Computadores
"GNU/Linux for human beings."
LPI ID: LPI000297782


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts