function startBackup($params, &$nexturl) { set_time_limit(0); header("Content-type:text/html;charset=utf-8"); $sizelimit = $params['sizelimit']; $filename = $params['filename']; $fileid = $params['fileid']; $tableid = $params['tableid']; $startid = $params['startid']; include_once CORE_DIR . '/lib/mysqldumper.class.php'; $dumper = new Mysqldumper(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); $dumper->setDroptables(true); $dumper->tableid = $tableid; $dumper->startid = $startid; $backdir = HOME_DIR . '/backup'; $finished = $dumper->multiDump($filename, $fileid, $sizelimit, $backdir); $fileid++; if (!$finished) { $nexturl = "index.php?ctl=system/backup&act=backup&sizelimit={$sizelimit}&filename={$filename}&fileid={$fileid}&tableid=" . $dumper->tableid . "&startid=" . $dumper->startid; } else { $dir = HOME_DIR . '/backup'; $tar = $this->system->loadModel('utility/tar'); chdir($dir); for ($i = 1; $i <= $fileid; $i++) { $tar->addFile('multibak_' . $filename . '_' . $i . '.sql'); } //Add archive xml $verInfo = $this->system->version(); $backupdata['app'] = $verInfo['app']; $backupdata['rev'] = $verInfo['rev']; $backupdata['vols'] = $fileid; $xml = $this->system->loadModel('utility/xml'); $xmldata = $xml->array2xml($backupdata, 'backup'); file_put_contents('archive.xml', $xmldata); $tar->addFile('archive.xml'); $tar->filename = 'multibak_' . $filename . '.tgz'; $tar->saveTar(); for ($i = 1; $i <= $fileid; $i++) { @unlink('multibak_' . $filename . '_' . $i . '.sql'); } @unlink('archive.xml'); } return $finished; }
</FORM> <br><hr><br> <?php set_time_limit(0); include_once '../config/config.php'; include_once './mysql_db.php'; $dbHost = DB_HOST; $dbUser = DB_USER; $dbPass = DB_PASSWORD; $dbName = DB_NAME; $GLOBALS['_tbpre'] = DB_PREFIX; define('MYSQL_CHARSET_NAME', DB_CHARSET); if ($_REQUEST["action"] == 'backup') { $dumper = new Mysqldumper($dbHost, $dbUser, $dbPass, $dbName); $dumper->setDroptables(true); $dumper->nodata = array(); if (!$_REQUEST['inited']) { $fileid = 0; $tableid = 0; $startid = -1; rptout("开始数据库备份...\n"); } else { $dumper->tableid = $_REQUEST['tableid']; $dumper->startid = $_REQUEST['startid']; $fileid = $_REQUEST['fileid']; } $finished = $dumper->multiDump($filename, $fileid, $savetype, 1024); $fileid++; rptout("数据库备份文件 data_" . $fileid . ".sql 已生成\n"); $tableid = $dumper->tableid;
$tables = isset($_POST['chk']) ? $_POST['chk'] : ''; if (!is_array($tables)) { echo '<html><body>' . '<script type="text/javascript">alert(\'Please select a valid table from the list below\');</script>' . '</body></html>'; exit; } /* * Code taken from Ralph A. Dahlgren MySQLdumper Snippet - Etomite 0.6 - 2004-09-27 * Modified by Raymond 3-Jan-2005 * Perform MySQLdumper data dump */ @set_time_limit(120); // set timeout limit to 2 minutes $dbname = str_replace('`', '', $dbase); $dumper = new Mysqldumper($database_server, $database_user, $database_password, $dbname); $dumper->setDBtables($tables); $dumper->setDroptables(isset($_POST['droptables']) ? true : false); $dumpfinished = $dumper->createDump('callBack'); if ($dumpfinished) { exit; } else { $e->setError(1, 'Unable to Backup Database'); $e->dumpError(); exit; } // MySQLdumper class can be found below } else { include_once "header.inc.php"; // start normal header } ?> <script language="javascript">
function backup() { $dumper = new Mysqldumper(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); $dumper->setDroptables(true); $dumper->nodata = array(); # if ($_POST['type'] == 'shoponly') { $dumper->backuptype = 'shoponly'; } # $fileid = 0; $this->backupfileprefix = date("YmdHis", time()); msg("开始数据库备份...\n"); do { $backupfilename = $this->backupfileprefix . "_" . ($fileid + 1) . ".sql"; $bakfile = "{$this->backupdir}/{$backupfilename}"; $finished = $dumper->multiDump($bakfile, $fileid, 1024); $fileid++; msg("数据库备份文件 {$backupfilename} 已生成\n"); } while (!$finished); msg("<hr><font color=green>数据库备份完毕</font>\n"); }