#!/usr/bin/env php &1"; //$dump_exec = "$bin_mysqldump -CefqQK --result-file=$dump_path/%s %s 2>&1"; $dump_exec = "$bin_mysqldump -CefqQK %s | gzip > $dump_path/%s.sql.gz "; $dump_host='localhost'; $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); if (BACKUP_RUN_STATS): if (!BACKUP_CRON) { printf("Polling statistics for {$stat['nDatabases']} databases...\n"); } $time[0][0] = microtime(true); while($row1 = mysql_fetch_row($sql_databases)) { $i_database++; $databases[$row1[0]]['name'] = $row1[0]; $sql_tables = mysql_query("SHOW TABLE STATUS FROM `{$row1[0]}`"); $databases[$row1[0]]['Tables'] = mysql_num_rows($sql_tables); while($row2 = mysql_fetch_assoc($sql_tables)) { $databases[$row1[0]]['Rows'] += $row2['Rows']; $databases[$row1[0]]['Data_length'] += $row2['Data_length']; $databases[$row1[0]]['Size'] += $row2['Data_length']; } if ($i_database%100==0) { if (!BACKUP_CRON) { printf("polled $i_database databases: %d%%\n", $i_database/$stat['nDatabases']*100); } break; } } $time[0][1] = microtime(true); foreach($databases as $name=>$info) { $stat['nTables'] += $info['Tables']; $stat['nRows'] += $info['Rows']; $stat['nSize'] += $info['Size']; } if (!BACKUP_CRON) { printf("\nPreparing backup...\n\nDatabases:\t%d\nTables:\t\t%d\nRows:\t\t%d\nSize:\t\t%d MB\n\n", $stat['nDatabases'], $stat['nTables'], $stat['nRows'], $stat['nSize']/1024/1024); } else: while($row1 = mysql_fetch_row($sql_databases)) { if ($row1[0] == 'information_schema') continue; $databases[$row1[0]]['name'] = $row1[0]; } endif; $i_database = 1; $time[1][0] = microtime(true); foreach($databases as $name=>$info) { if (in_array($name, $EXCEPTIONS)) { if (!BACKUP_CRON) { printf('Skipping EXCEPTIONed database: %s', $name); } continue; } if (stristr($name,'+')) { $owner = array_shift(explode('+',$name)).'/'; @mkdir("$dump_path/$owner"); `fs sa $dump_path/$owner $owner rl 2>/dev/null`; `fs sa $dump_path/$owner system:authuser none`; } else { $owner = 'root/'; @mkdir("$dump_path/$owner"); `fs sa $dump_path/$owner system:authuser none`; `fs sa $dump_path/$owner system:sql-backup none`; } $exec = sprintf($dump_exec, $name, $owner.$name); if (file_exists("$dump_path/$owner$name.sql.gz")) { if (!BACKUP_CRON) { printf("Saving old dump file: %s\n", "$dump_path/$owner$name.sql.gz"); } rename("$dump_path/$owner$name.sql.gz","$dump_path/OLD/$name.sql.gz"); } if (!BACKUP_CRON) { printf("Dumping %d of %d / %d%% (%s):\n", $i_database, $stat['nDatabases'], $i_database/$stat['nDatabases']*100, $name); } //printf("Executing $exec\n"); $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]); } ?>