Script PHP para respaldar y restaurar una base de datos: Crear volcado - con notificación por correo

Paso 1:

Por favor, ten en cuenta que las bases de datos grandes pueden no ser respaldadas por el script, ya que el script podría enfrentarse a restricciones del servidor.

 

Los siguientes pasos son necesarios:

1. Crea una subcarpeta "backup" en el directorio principal FTP de tu dominio.

2. Crea un archivo PHP (db_backup.php) en esa carpeta con el siguiente contenido:

 

<?php
######## configuraciones #############################################
$db_name = "TuBaseDeDatos";
$db_passwd = "TuContraseñaBD";
$downloadlink_erstellen = "si";

$bestaetigungsmail_senden = "si";

$bestaetigungsmail_adresse = "TuCorreo";
$bestaetigungsmail_betreff = "[BACKUP] Tu Script de Respaldo";

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

####################################################################
################## ¡NO CAMBIES NADA DESDE AQUÍ! ################

### verificar datos
if ( $db_name == "TuBaseDeDatos" or $db_passwd == "TuContraseñaBD" )
{
die("ERROR: ¡Debes ingresar tus datos de la base de datos en el script primero!");
}
if ( file_exists($sql_file) or file_exists($sql_file . ".gz") )
{
die("ERROR: ¡El volcado a crear ya existe!");
}

## crear volcado
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 tamaño
$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]";

### crear mensaje
$message = "Tu respaldo de la base de datos <b>" . $db_name . "</b> ha sido completado.<br>";
$message .= "El tamaño del volcado creado es <b>" . $groesse . "</b>.<br>";

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

## mostrar mensaje
echo $message;

### enviar correo
if ($bestaetigungsmail_senden == "yes" or $bestaetigungsmail_senden == "si" 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>ERROR: No se pudo enviar el correo porque la dirección es inválida!";
}
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("ERROR: No se pudo enviar el correo debido a un error desconocido");
echo "<br>¡Correo de confirmación enviado exitosamente!";
}
}
?>

 

Por favor, cambia las siguientes 3 líneas en el código fuente:

$db_name = "TuBaseDeDatos";
$db_passwd = "TuContraseñaBD";

$bestaetigungsmail_adresse = "TuCorreo";

Obtén el nombre de la base de datos y la contraseña de tu KAS (gestión técnica) en Bases de Datos y colócalos en los campos "TuBaseDeDatos" y "TuContraseñaBD". En "TuCorreo", introduce la dirección de correo a la que deseas que se envíe el correo de confirmación.

Atención: Por favor, establece una protección de directorio para la carpeta de respaldo en KAS (gestión técnica) a través de Herramientas -> Protección de Directorio. Así proteges tus respaldos de base de datos contra accesos no autorizados.

4. Accede a la URL http://www.tu-direccion-en-la-red.de/backup/db_backup.php. El script de respaldo se iniciará, creará un respaldo de tu base de datos y lo copiará como un archivo comprimido llamado, por ejemplo, dumpFECHA.sql.gz en la carpeta “backup”.

Es normal que el respaldo de la BD sea más pequeño que el tamaño de la base de datos que se muestra en phpMyAdmin.
¿Qué tan útil encontró esta guía?

Buscar soporte y FAQ

Seitensuche