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; }
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; $startid = $dumper->startid; if ($finished) { rptout("<hr><font color=green>数据库备份完毕</font>\n"); } else { jsjmp($_SERVER['PHP_SELF'] . "?action=backup&fileid={$fileid}&tableid={$tableid}&startid={$startid}&inited=1"); } } if ($_REQUEST["action"] == 'restore') { $fileid = $_GET['fileid'] == '' ? 1 : $_GET['fileid']; $link = mysql_connect($dbHost, $dbUser, $dbPass, true) or die("Could not connect : " . mysql_error($link)); $bakfile = "data_" . $fileid . ".sql"; if (!file_exists($bakfile)) {
if ($_REQUEST["action"] == 'backup') { //开始备份mysql库 $filename = md5($dbPass); $sizelimit = 1024; $fileid = 0; $tableid = 0; $startid = -1; rptout("开始数据库备份...\n"); $dumper = new Mysqldumper($dbHost, $dbUser, $dbPass, $dbName); $dumper->setDroptables(true); $dumper->nodata = array(); $finished = false; while (!$finished) { $dumper->tableid = $tableid; $dumper->startid = $startid; $finished = $dumper->multiDump($filename, $fileid, $savetype, $sizelimit); $fileid++; rptout("数据库备份文件 data_" . $fileid . ".sql 已生成\n"); $tableid = $dumper->tableid; $startid = $dumper->startid; } rptout("<hr><font color=green>数据库备份完毕</font>\n"); } if ($_REQUEST["action"] == 'restore') { rptout("备份本地商品表....\n"); $sql = "DROP TABLE IF EXISTS {$GLOBALS['_tbpre']}mall_goods_bak"; mysql_query($sql); $sql = "Alter TABLE {$GLOBALS['_tbpre']}mall_goods RENAME TO {$GLOBALS['_tbpre']}mall_goods_bak"; mysql_query($sql); $fileid = 1; while (true) {
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"); }