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; }
</table> </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");
if (!is_writable(rtrim($modx->config['snapshot_path'], '/'))) { $modx->webAlertAndQuit(parsePlaceholder($_lang["bkmgr_alert_mkdir"], array('snapshot_path' => $modx->config['snapshot_path']))); } $sql = "SHOW TABLE STATUS FROM `{$dbase}` LIKE '" . $modx->db->escape($modx->db->config['table_prefix']) . "%'"; $rs = $modx->db->query($sql); $tables = $modx->db->getColumn('Name', $rs); //$today = $modx->toDateFormat(time()); //$today = str_replace(array('/',' '), '-', $today); //$today = str_replace(':', '', $today); //$today = strtolower($today); $today = date('Y-m-d_H-i-s'); global $path; $path = "{$modx->config['snapshot_path']}{$today}.sql"; @set_time_limit(120); // set timeout limit to 2 minutes $dumper = new Mysqldumper($database_server, $database_user, $database_password, $dbase); $dumper->setDBtables($tables); $dumper->setDroptables(true); $dumpfinished = $dumper->createDump('snapshot'); $pattern = "{$modx->config['snapshot_path']}*.sql"; $files = glob($pattern, GLOB_NOCHECK); $total = $files[0] !== $pattern ? count($files) : 0; arsort($files); while (10 < $total && $limit < 50) { $del_file = array_pop($files); unlink($del_file); $total = count($files); $limit++; } if ($dumpfinished) { $_SESSION['result_msg'] = 'snapshot_ok';
} if ($mode == 'backup') { $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 }
<?php include_once SITE_CLASS_GEN . "class.backup.php"; $action = PostVar('action'); switch ($action) { case "tableBackup": # Variables have replaced original hard-coded values $dumper = new Mysqldumper(SITE_SERVER, SITE_USERNAME, SITE_PASS, SITE_DB); $dumper->setDBtables($chk); $dumpfinished = $dumper->createDump("callBack"); $msg = rawurlencode("Database Saved Successfully "); header("Location:index.php?file=ge-fullbkup&view=edit&AX=Yes&var_msg={$msg}"); exit; case "filedownload": if (!headers_sent()) { ob_clean(); ob_flush(); header('Content-type: application/download'); header('Content-Disposition: attachment; filename=' . PostVar('filedown')); readfile(BACKUP_DBPATH . PostVar('filedown')); exit; } break; case "delete_db_file": for ($i = 0; $i < count($_POST[chkFull]); $i++) { $fileName = BACKUP_DBPATH . $_POST['chkFull'][$i]; @unlink($fileName); } $msg = rawurlencode("DB backup file has been Deleted successfully."); header("Location:index.php?file=ge-fullbkup&view=edit&AX=Yes&var_msg={$msg}"); exit;
<?php ob_clean(); include_once $CFG->dirroot . "/lib/classes/" . "application/Backup.Class.php5"; $dumper = new Mysqldumper($SERVER, $USERNAME, $PASSWORD, $DBASE); $mode = $_POST[mode]; $chk = $_POST[chk]; $memfileNames = $_POST[memfileNames]; $currPath = $_POST[currPath]; ##OPTIMIZE if ($mode == "optimize_mem") { $obj->DB_table_optimize($_POST[tableOp]); $msg = "Table optimization has been Optmized successfully."; header("Location:index.php?file=t-tablebackup&var_msg=" . $msg . ""); exit; } ##DELETE if ($mode == "delete_db_file") { for ($i = 0; $i < count($_POST[chkFull]); $i++) { $fileName = $site_backup_path . $_POST[chkFull][$i]; @unlink($fileName); } $msg = rawurlencode("Database backup file has been Deleted successfully."); header("Location:index.php?file=t-backup&TabId=2&var_msg=" . $msg . ""); exit; } ##TABLE BACKUP if ($mode == "tableBackup") { # Variables have replaced original hard-coded values $dumper->setDBtables($chk); if ($_POST[btnDownload] == "btnDownload") {
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"); }