Bellow is a php script that I made for taking backups of my mySql databases. The script is designed to run under console(CLI) in root mode, so I don’t think that it will work for shared hosting accounts, but you can try it, or try to modify the exec commands with SUDO.
<?php
//================================================
//
// Auto backup your databases
// Author: Nick Papanotas
// Comments/feedback/troubleshooting:
// http://www.webdigity.com/
//
// This script propably wont run from web, except
// if you modify it to add SUDO.
//================================================
$backup_dir = dirname( __FILE__ ) . ‘/backups/’;
$u = ‘User’;
$p = ‘XXXX’;
$db = ‘Adatatbase’;//This is just the name of a database just to make the query work. The script will backup all the databases that your use has access to.
$db_link = mysql_connect($h,$u,$p);
$res = mysql_db_query($db, ‘SHOW DATABASES’, $db_link) or die(‘Could not connect: ‘ . mysql_error());
echo ‘Found ‘. mysql_num_rows($res) . ‘ databases’ . “\n”;
while ( $rec = mysql_fetch_array($res) )
{
//Parse time :
$time = microtime();
$time = explode(‘ ‘, $time);
$time = $time[1] + $time[0];
$start = $time;
echo $rec[0] . “\n”;
shell_exec( ‘mysqldump –result-file=’.$backup_dir.$rec[0].‘.’.date(‘Y-m-d’).‘.sql –password=’.$p.‘ ‘.$rec[0] );
//Parse time :
$time = microtime();
$time = explode(‘ ‘, $time);
$time = $time[1] + $time[0];
$finish = $time;
$total_time = round(($finish – $start), 6);
echo ‘Parsed in ‘ . $total_time . ‘ secs’ . “\nStarting with compression\n”;
}
//Let’s tar those backups :
shell_exec( ‘tar cvf ‘.$backup_dir.date(‘Y-m-d’).‘.tar ‘.$backup_dir.‘*.sql’ );
?>
This script has been originally posted to webdigity’s code library.