#!/usr/bin/env php $dump_path/%s.sql.gz "; $dump_host=':/srv/mysql/mysql.sock'; $dump_user='mit-backup'; $dump_pass=''; $sql_resource = mysql_connect($dump_host,$dump_user,$dump_pass); $sql_databases = mysql_list_dbs($sql_resource); $stat['nDatabases'] = mysql_num_rows($sql_databases); @unlink("$partition_path/skipped"); while($row1 = mysql_fetch_row($sql_databases)) { if ($row1[0] == 'information_schema') continue; if (preg_match('/[^a-z0-9\+_.-]+/i', $row1[0])) { $f = fopen("$partition_path/skipped",'a'); fwrite($f, "{$row1[0]}\n"); fclose($f); } $databases[$row1[0]]['name'] = $row1[0]; } $i_database = 1; $time[1][0] = microtime(true); foreach($databases as $name=>$info) { if (in_array($name, $EXCEPTIONS)) { if (!BACKUP_CRON) printf("Skipping database: %s\n", $name); continue; } else { if (!BACKUP_CRON) printf("Dumping database: %s\n", $name); } if (stristr($name,'+')) { $owner = array_shift(explode('+',$name)); } else { $owner = 'root'; } $ownerl = strtolower($owner); if (!is_link($dump_path.'/'.$owner)) { symlink($partition_path.'/'.substr($ownerl,0,1).'/'.$owner, $dump_path.'/'.$owner); } if (!is_dir(readlink($dump_path.'/'.$owner))) { mkdir(readlink($dump_path.'/'.$owner)); } `fs sa $dump_path/$owner/ system:anyuser none`; `fs sa $dump_path/$owner/ system:authuser none`; if ($owner == 'root') { `fs sa $dump_path/$owner/ system:sql-backup none`; } $exec = sprintf($dump_exec, $name, $owner.'/'.$name); if (!BACKUP_CRON) printf("Dumping %d of %d / %d%% (%s):\n", $i_database, $stat['nDatabases'], $i_database/$stat['nDatabases']*100, $name); $time[$name][0] = microtime(true); $dump_proc = popen($exec, 'r'); while(!feof($dump_proc)) echo fread($dump_proc, 1024); pclose($dump_proc); $time[$name][1] = microtime(true); if (!BACKUP_CRON) printf("\n"); $i_database++; } $time[1][1] = microtime(true); if (!BACKUP_CRON) printf("Finished.\n%s seconds.\n", $time[1][1]-$time[1][0]); ?>