Script de Backup automatizado de banco de dados em servidor cPanel
#!/bin/bash
# Informações do script
# Autor: Alex Junio
# Email: suporte@escoladohosting.com.br
# Site: www.escoladohosting.com.br
# Data de criação: 2024-06-19
# Última atualização: 2024-06-19
# Função para exibir o uso correto do script
usage() {
echo "Uso: $0 <período>"
echo "Períodos suportados: 1h, 6h, 12h, 24h"
exit 1
}
# Função para configurar o cron
configure_cron() {
local period=$1
local cron_time
case $period in
1h) cron_time="0 * * * *" ;;
6h) cron_time="0 */6 * * *" ;;
12h) cron_time="0 */12 * * *" ;;
24h) cron_time="0 0 * * *" ;;
*) echo "Período inválido: $period"; usage ;;
esac
# Adiciona a tarefa no crontab
(crontab -l 2>/dev/null; echo "$cron_time /path/to/backup_db.sh >/dev/null 2>&1") | crontab -
echo "Tarefa de backup configurada para $period no cron."
}
# Verificação e criação do diretório base de backup
BACKUPBASE="/backup/databases/"
if [ ! -e $BACKUPBASE ]; then
mkdir -p $BACKUPBASE
chmod 700 $BACKUPBASE
fi
# Verifica se há argumentos
if [ $# -eq 1 ]; then
if [[ $1 == "1h" || $1 == "6h" || $1 == "12h" || $1 == "24h" ]]; then
configure_cron $1
exit 0
else
usage
fi
fi
# Define a data atual
DATE=$(date +%d%m%Y)
# Cria o diretório de backup para a data atual
BACKUPDIR="${BACKUPBASE}${DATE}/"
if [ ! -e $BACKUPDIR ]; then
mkdir -p $BACKUPDIR
chmod 700 $BACKUPDIR
fi
# Backup dos bancos de dados
for db in $(mysqlshow | grep -v _schema | awk -F "| " '{print $2}'); do
mysqldump $db | bzip2 -9czq > "${BACKUPDIR}${db}-db.bz2"
done
# Remoção de diretórios de backup antigos (mais de 3 dias)
find $BACKUPBASE -maxdepth 1 -type d -mtime +3 | xargs rm -rf
# Definição de permissões dos arquivos de backup
chmod 600 ${BACKUPDIR}*
echo "Backup realizado com sucesso."
Script de Restore de Banco de Dados
#!/bin/bash
#
# Script de Importação de Banco de Dados MySQL
# Autor: Alex Junio
# Email: suporte@escoladohosting.com.br
# Site: www.escoladohosting.com.br
# Data de Criação: 18/01/2023
# Última Atualização: 15/06/2024
#
# Este script realiza a importação de um banco de dados MySQL a partir de um arquivo de backup comprimido.
# Uso: bash /home/scripts/importdb.sh /caminho/para/arquivo.bz2
# Verificação dos argumentos
if [ "$#" -ne 1 ]; then
echo "Uso: $0 caminho/para/o/arquivo.bz2"
exit 1
fi
# Caminho absoluto do arquivo de backup
BACKUPFILE=$1
# Verificação se o arquivo existe
if [ ! -f "$BACKUPFILE" ]; then
echo "Erro: Arquivo não encontrado!"
exit 1
fi
# Extração do nome do banco de dados a partir do nome do arquivo
DBNAME=$(basename "$BACKUPFILE" | sed 's/-sql-.*//')
# Descompressão e importação do banco de dados
bzcat "$BACKUPFILE" | mysql -u root "$DBNAME"
# Verificação do resultado da importação
if [ $? -eq 0 ]; then
echo "Importação do banco de dados '$DBNAME' concluída com sucesso!"
else
echo "Erro na importação do banco de dados '$DBNAME'."
exit 1
fi