Je pense que ceci vas t'aider.
<?php
//Information sur la base de donnée
$host = "host_bdd";
$user = "user_bdd";
$password = "mdp_bdd";
$db_name = "db";
//Utilisation de la commande mysqldump pour récupérer la base de donnée, puis compression dans un gz
system("mysqldump --host=".$host." --user=".$user." --password=".$password." --no-create-db --default-character-set=utf8 --lock-tables=FALSE --tables ".$db_name." > ".$db_name.".sql");
system("gzip -v ".$db_name.".sql");
//Ici le mail
// Adresse du contact
$to = 'ton_adresse@truc.com';
// Sujet du message
$subject = 'Un sujet qui dit n\'importe quoi';
//Mail et nom de l'expéditeur
$from_name = 'Site Web';
$from_mail = 'adresse_exp@truc.com';
//Clé aléatoire de limite
$boundary = md5(uniqid(microtime(), TRUE));
//En-tête
$headers = 'From: '.$from_name.' <'.$from_mail.'>'."\r\n";
$headers .= 'Mime-Version: 1.0'."\r\n";
$headers .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n";
$headers .= "\r\n";
// Message
$msg = 'This is a multipart/mixed message.'."\r\n\r\n";
// Texte
$msg .= '--'.$boundary."\r\n";
$msg .= 'Content-type:text/plain;charset=utf-8'."\r\n";
$msg .= 'Content-transfer-encoding:8bit'."\r\n";
$msg .= 'Voici la sauvegarde de la base de donnée.'."\r\n";
// Pièce jointe
$file_name = $db_name.'.sql.gz';
if (file_exists($file_name))
{
$file_type = filetype($file_name);
$file_size = filesize($file_name);
$handle = fopen($file_name, 'r') or die('File '.$file_name.'can t be open');
$content = fread($handle, $file_size);
$content = chunk_split(base64_encode($content));
$f = fclose($handle);
$msg .= '--'.$boundary."\r\n";
$msg .= 'Content-type:'.$file_type.';name='.$file_name."\r\n";
$msg .= 'Content-transfer-encoding:base64'."\r\n";
$msg .= $content."\r\n";
}
$msg .= '--'.$boundary."\r\n";
// Function mail()
mail($to, $subject, $msg, $headers);
?>
T'auras juste à lancer ce script avec CRON et t'auras ta sauvegarde de BDD normalement.