Пример #1
0
 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;
 }
Пример #2
0
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)) {
Пример #3
0
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) {
Пример #4
0
 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");
 }