Backup com Shell Script
Publicado por Marcelo Viana (última atualização em 27/12/2013)
[ Hits: 17.585 ]
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
MySQL - Script para backup automatizado
Backup de diretórios do sistema Linux
Backup de arquivos e banco de dados com envio de e-mail
Limpeza dos dados do rConfig (ferramenta open-source de gerenciamento de configuração
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
[Resolvido] VirtualBox can't enable the AMD-V extension
Como verificar a saúde dos discos no Linux
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Fiz uma pergunta no fórum mas não consigo localizar (13)
Quais os códigos mais dificeis que vcs sabem fazer? (2)
Não consigo instalar distro antiga no virtualbox nem direto no hd (7)
Servidor Ubuntu 24.04 HD 500 não tenho espaço na \home\adminis... [RES... (8)
Dá para criar um bom jogo usando a linguagem de programação C? [RESOLV... (1)









