diff --git a/plugins/mariadb/index.py b/plugins/mariadb/index.py index 2e0c7cbb9..f71ca24c6 100755 --- a/plugins/mariadb/index.py +++ b/plugins/mariadb/index.py @@ -867,6 +867,81 @@ def importDbExternal(): return mw.returnJson(True, 'ok') +def importDbExternalProgress(): + args = getArgs() + data = checkArgs(args, ['file', 'name']) + if not data[0]: + return data[1] + + file = args['file'] + name = args['name'] + + cmd = 'cd '+mw.getServerDir()+'/mdserver-web && source bin/activate && ' + cmd += 'python3 '+mw.getServerDir()+'/mdserver-web/plugins/mariadb/index.py import_db_external_progress_bar {"file":"'+file+'","name":"'+name+'"}' + return mw.returnJson(True, 'ok',cmd) + +def importDbExternalProgressBar(): + args = getArgs() + data = checkArgs(args, ['file', 'name']) + if not data[0]: + return data[1] + + file = args['file'] + name = args['name'] + + import_dir = mw.getRootDir() + '/backup/import/' + + file_path = import_dir + file + if not os.path.exists(file_path): + return mw.returnJson(False, '文件突然消失?') + + exts = ['sql', 'gz', 'zip'] + ext = mw.getFileSuffix(file) + if ext not in exts: + return mw.returnJson(False, '导入数据库格式不对!') + + tmp = file.split('/') + tmpFile = tmp[len(tmp) - 1] + tmpFile = tmpFile.replace('.sql.' + ext, '.sql') + tmpFile = tmpFile.replace('.' + ext, '.sql') + tmpFile = tmpFile.replace('tar.', '') + + # print(tmpFile) + import_sql = "" + if file.find("sql.gz") > -1: + cmd = 'cd ' + import_dir + ' && gzip -dc ' + \ + file + " > " + import_dir + tmpFile + info = mw.execShell(cmd) + if info[1] == "": + import_sql = import_dir + tmpFile + + if file.find(".zip") > -1: + cmd = 'cd ' + import_dir + ' && unzip -o ' + file + mw.execShell(cmd) + import_sql = import_dir + tmpFile + + if file.find("tar.gz") > -1: + cmd = 'cd ' + import_dir + ' && tar -zxvf ' + file + mw.execShell(cmd) + import_sql = import_dir + tmpFile + + if file.find(".sql") > -1 and file.find(".sql.gz") == -1: + import_sql = import_dir + file + + if import_sql == "": + return mw.returnJson(False, '未找SQL文件') + + pwd = pSqliteDb('config').where('id=?', (1,)).getField('mysql_root') + sock = getSocketFile() + + my_cnf = getConf() + mysql_cmd = getServerDir() + '/bin/mariadb --defaults-file=' + my_cnf + \ + ' -uroot -p"' + pwd + '" -f ' + name + mysql_cmd_progress_bar = "pv -t -p " + import_sql + '|'+ mysql_cmd + print(mysql_cmd_progress_bar) + rdata = os.system(mysql_cmd_progress_bar) + return "" + def deleteDbBackup(): args = getArgs() @@ -3258,6 +3333,10 @@ if __name__ == "__main__": print(importDbBackup()) elif func == 'import_db_external': print(importDbExternal()) + elif func == 'import_db_external_progress': + print(importDbExternalProgress()) + elif func == 'import_db_external_progress_bar': + print(importDbExternalProgressBar()) elif func == 'delete_db_backup': print(deleteDbBackup()) elif func == 'get_db_backup_list': diff --git a/plugins/mariadb/js/mariadb.js b/plugins/mariadb/js/mariadb.js index 7ab192009..bba290bb4 100755 --- a/plugins/mariadb/js/mariadb.js +++ b/plugins/mariadb/js/mariadb.js @@ -938,6 +938,31 @@ function importDbExternal(file,name){ }); } +function importDbExternalProgress(file,name){ + myPost('import_db_external_progress',{file:file,name:name}, function(data){ + var rdata = $.parseJSON(data.data); + layer.open({ + title: "手动导入命令CMD【显示进度】", + area: ['600px', '180px'], + type:1, + closeBtn: 1, + shadeClose: false, + btn:["复制","取消"], + content: '
\ +
\ +
'+rdata.data+'
\ +
\ +
', + success:function(){ + copyText(rdata.data); + }, + yes:function(){ + copyText(rdata.data); + } + }); + }); +} + function setLocalImport(db_name){ //上传文件 @@ -993,6 +1018,7 @@ function setLocalImport(db_name){ ' + file_list[i]['time'] + '\ \ 导入 | \ + 导入进度 | \ 删除\ \ '; @@ -1016,7 +1042,7 @@ function setLocalImport(db_name){ var layerIndex = layer.open({ type: 1, title: "从文件导入数据", - area: ['600px', '380px'], + area: ['700px', '380px'], closeBtn: 1, shadeClose: false, content: '
\