con el comando MYSQLDUMP, puedes hacer algo como esto
Código PHP:
mysqldump -u root -p --opt tu_DB
Donde -u root es tu nombre de usuario y -p contraseña
Si usas PHP bajo windows, este script deberías de funcionarte
Código PHP:
<?
$date = date("Y-m-d");
$lugar = $_SERVER['SCRIPT_FILENAME'];
$fecha = date(Ymd);
$filename = $fecha."_backup.sql";
$path = dirname($lugar)."/".$filename;
// Cabezeras para forzar al navegador a guardar el archivo
header("Pragma: no-cache");
header("Expires: 0");
header("Content-Transfer-Encoding: binary");
header("Content-type: application/force-download");
header("Content-Disposition: attachment;copia_seg_db=$path");
$bases=mysql_list_dbs();
$number_rows = mysql_num_rows ($bases);
for ($index=0; $index < $number_rows; ++$index) {
$bd=mysql_result ($bases, $index, 0);
$usuario="root"; // Usuario de la base de datos, un ejemplo podria ser 'root'
$passwd="extreme"; // Contraseña asignada al usuario
//$bd="all-tables"; // Nombre de la Base de Datos a exportar
// Funciones para exportar la base de datos
$executa = "g:\\apache\\mysql\bin\mysqldump.exe --user=$usuario --password=$passwd --opt $bd";
system($executa, $resultado);
// Comprobar si se a realizado bien, si no es asi, mostrará un mensaje de error
if ($resultado) { echo "<H1>Error ejecutando comando: $executa</H1>\n"; }
}
?>
Bajo unix deberás usar el comando mysqlhotcopy, no sabría decirte si funciona bajo GNU/Linux
Saludos cuidate