Script PHP para backup e restauração de banco de dados: Criar dump - com notificação por e-mail

Passo 1:

Atenção, bancos de dados maiores podem não ser salvos via script, pois o script pode encontrar restrições do servidor!

 

Passos necessários:

1. Crie uma pasta "backup" no diretório principal do seu FTP.

2. Crie um arquivo PHP (db_backup.php) com o seguinte conteúdo na pasta:

 

<?php
######## configurações #############################################
$db_name = "SuaBaseDeDados";
$db_passwd = "SuaSenhaDeBaseDeDados";
$downloadlink_erstellen = "sim";

$bestaetigungsmail_senden = "sim";

$bestaetigungsmail_adresse = "SeuEmail";
$bestaetigungsmail_betreff = "[BACKUP] Seu script de backup";

$sql_file = "dump_" . $db_name . "_" . date('Ymd_Hi') . ".sql";

####################################################################
################## NÃO ALTERAR A PARTIR DAQUI!!! ################

### verificar dados
if ( $db_name == "SuaBaseDeDados" or $db_passwd == "SuaSenhaDeBaseDeDados" )
{
die("ERRO: Você deve inserir seus dados de banco de dados no script primeiro!");
}
if ( file_exists($sql_file) or file_exists($sql_file . ".gz") )
{
die("ERRO: O dump a ser criado já existe!");
}

## criar dump
exec("mariadb-dump -u $db_name -p'$db_passwd' --single-transaction --allow-keywords --complete-insert --insert-ignore --routines --events --force $db_name > $sql_file");
exec("gzip $sql_file");

### determinar tamanho
$datei = $sql_file . ".gz";
$size = filesize($datei);
$i = 0;
while ( $size > 1024 )
{
$i++;
$size = $size / 1024;
}
$fileSizeNames = array(" Bytes", " KiloBytes", " MegaBytes", " GigaBytes", " TerraBytes");
$size = round($size,2);
$size = str_replace(".", ",", $size);
$groesse = "$size $fileSizeNames[$i]";

### criar mensagem
$message = "Seu backup do banco de dados <b>" . $db_name . "</b> foi realizado.<br>";
$message .= "O tamanho do dump criado é <b>" . $groesse . "</b>.<br>";

if ($downloadlink_erstellen == "yes" or $downloadlink_erstellen == "sim" or $downloadlink_erstellen == "1")
{
$link = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
$link = str_replace(basename(__FILE__),$datei,$link);
$message .= "Link de download: <a href=" . $link . ">" . $datei . "</a>";
}

## exibir mensagem
echo $message;

### enviar email
if ($bestaetigungsmail_senden == "yes" or $bestaetigungsmail_senden == "sim" or $bestaetigungsmail_senden == "1")
{
if(!preg_match( '/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+/' , $bestaetigungsmail_adresse))
{
echo "<br>ERRO: Email não enviado, endereço inválido!";
}
else
{
mail($bestaetigungsmail_adresse, $bestaetigungsmail_betreff,
$message,"From: backupscript@{$_SERVER['SERVER_NAME']}\r\n" . "Reply-To: backupscript@{$_SERVER['SERVER_NAME']}\r\n" . "Content-Type: text/html\r\n")
or die("ERRO: Email não enviado por erro desconhecido");
echo "<br>Email de confirmação enviado com sucesso!";
}
}
?>

 

Por favor, altere as 3 linhas a seguir no código-fonte:

$db_name = "SuaBaseDeDados";
$db_passwd = "SuaSenhaDeBaseDeDados";

$bestaetigungsmail_adresse = "SeuEmail";

Obtenha o nome e a senha do banco de dados no seu KAS (administração técnica) em Bancos de Dados e substitua nos campos "SuaBaseDeDados" e "SuaSenhaDeBaseDeDados". No "SeuEmail", insira o endereço de email para onde deseja enviar a confirmação.

Atenção: Configure proteção de diretório para a pasta de backup no KAS (administração técnica) em Ferramentas -> Proteção de Diretório! Assim, você protege seus backups contra acessos não autorizados.

4. Acesse a URL http://www.seu-endereco-na-web.com/backup/db_backup.php. O script de backup será iniciado, criará um backup do seu banco de dados e o copiará como um arquivo compactado com o nome, por exemplo, dumpDATA.sql.gz na pasta "backup".

É normal que o backup do DB seja menor do que o tamanho do banco de dados exibido no phpMyAdmin.
Quão útil você achou este guia?

Procurar Suporte & FAQ

Seitensuche