I use this one with a crontab. This send me the db backup via email.
Code:
#! /usr/bin/php -q
<?php
$dbhost = 'localhost'; // Server address of your MySQL Server
$dbuser = ' '; // Username to access MySQL database
$dbpass = ' '; // Password to access MySQL database
$dbname = ' '; // Database Name
$use_gzip = "yes"; // Set to No if you don't want the files sent in .gz format
$remove_sql_file = "yes"; // Set this to yes if you want to remove the .sql file after gzipping. Yes is recommended.
$remove_gzip_file = "yes"; // Set this to yes if you want to delete the gzip file also. I recommend leaving it to "no"
$savepath = "/path/to/dbsender"; // Full path to this directory. Do not use trailing slash!
$send_email = "yes"; // Do you want this database backup sent to your email? Fill out the next 2 lines
$to = "you@you.com"; // Who to send the emails to
$from = "webmaster@you.com"; // Who should the emails be sent from?
$senddate = date("j F Y");
$subject = "Database Backup - $senddate"; // Subject in the email to be sent.
$message = "Your MySQL database has been backed up and is attached to this email"; // Brief Message.
$use_ftp = ""; // Do you want this database backup uploaded to an ftp server? Fill out the next 4 lines
$ftp_server = ""; // FTP hostname
$ftp_user_name = ""; // FTP username
$ftp_user_pass = ""; // FTP password
$ftp_path = ""; // This is the path to upload on your ftp server!
$date = date("mdy-hia");
$filename = "$savepath/$dbname-$date.sql";
passthru("mysqldump --opt -h$dbhost -u$dbuser -p$dbpass $dbname >$filename");
if($use_gzip=="yes"){
$zipline = "tar -czf ".$dbname."-".$date."_sql.tar.gz $dbname-$date.sql";
shell_exec($zipline);
}
if($remove_sql_file=="yes"){
exec("rm -r -f $filename");
}
if($use_gzip=="yes"){
$filename2 = "$savepath/".$dbname."-".$date."_sql.tar.gz";
} else {
$filename2 = "$savepath/$dbname-$date.sql";
}
if($send_email == "yes" ){
$fileatt_type = filetype($filename2);
$fileatt_name = "".$dbname."-".$date."_sql.tar.gz";
$headers = "From: $from";
$file = fopen($filename2,'rb');
$data = fread($file,filesize($filename2));
fclose($file);
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
$headers .= "\nMIME-Version: 1.0\n" ."Content-Type: multipart/mixed;\n" ." boundary=\"{$mime_boundary}\"";
$message = "This is a multi-part message in MIME format.\n\n" ."--{$mime_boundary}\n" ."Content-Type: text/plain; charset=\"iso-8859-1\"\n" ."Content-Transfer-Encoding: 7bit\n\n" .
$message . "\n\n";
$data = chunk_split(base64_encode($data));
$message .= "--{$mime_boundary}\n" ."Content-Type: {$fileatt_type};\n" ." name=\"{$fileatt_name}\"\n" ."Content-Disposition: attachment;\n" ." filename=\"{$fileatt_name}\"\n" ."Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n" ."--{$mime_boundary}--\n";
$ok = @mail($to, $subject, $message, $headers);
if ($ok) {
echo "<h4><center>Database backup created and sent! File name $filename2</center></h4>";
} else {
echo "<h4><center>Mail could not be sent. Sorry!</center></h4>";
}
}
if($use_ftp == "yes"){
$ftpconnect = "ncftpput -u $ftp_user_name -p $ftp_user_pass -d debsender_ftplog.log -e dbsender_ftplog2.log -a -E -V $ftp_server $ftp_path $filename2";
shell_exec($ftpconnect);
echo "<h4><center>$filename2 Was created and uploaded to your FTP server!</center></h4>";
}
if($remove_gzip_file=="yes"){
exec("rm -r -f $filename2");
}
?>