MCPcopy Create free account
hub / github.com/aaPanel/BaoTa / ToBackup

Method ToBackup

class/databaseModel/pgsqlModel.py:601–707  ·  view source on GitHub ↗

@备份数据库 id 数据库id

(self, args)

Source from the content-addressed store, hash-verified

599 return public.returnMsg(True, 'DEL_SUCCESS')
600
601 def ToBackup(self, args):
602 """
603 @备份数据库 id 数据库id
604 """
605 if not os.path.exists(self._PGDUMP_BIN):
606 return public.returnMsg(False, '缺少备份工具,请先通过软件商店pgsql管理器!')
607
608 if not hasattr(args, "id"):
609 return public.returnMsg(False, "缺少参数!id")
610 db_id = args.id
611 table_list = getattr(args, "table_list", [])
612 storage_type = getattr(args, "storage_type", "db")
613
614 if storage_type not in ["db", "table"]:
615 return public.returnMsg(False, "参数错误!storage_type")
616
617 db_find = public.M('databases').where("id=? AND LOWER(type)=LOWER('pgsql')", (db_id,)).find()
618 if not db_find: return public.returnMsg(False, '数据库不存在!')
619
620 if not db_find["password"].strip():
621 return public.returnMsg(False, '数据库密码为空,请先设置密码.')
622
623 db_name = db_find["name"]
624
625 db_user = "postgres"
626 db_host = "127.0.0.1"
627 if db_find["db_type"] == 0:
628 db_port = panelPgsql.get_config_options("port", int, 5432)
629
630 t_path = os.path.join(public.get_panel_path(), "data/postgresAS.json")
631 if not os.path.isfile(t_path):
632 return public.returnMsg(False, "请先设置管理员密码!")
633 db_password = json.loads(public.readFile(t_path)).get("password", "")
634 if not db_password:
635 return public.returnMsg(False, "数据库密码为空!请先设置数据库密码!")
636 elif db_find["db_type"] == 1:
637 # 远程数据库
638 conn_config = json.loads(db_find["conn_config"])
639 db_host = conn_config["db_host"]
640 db_port = conn_config["db_port"]
641 db_user = conn_config["db_user"]
642 db_password = conn_config["db_password"]
643 elif db_find["db_type"] == 2:
644 conn_config = public.M("database_servers").where("id=? AND LOWER(db_type)=LOWER('pgsql')", db_find["sid"]).find()
645 db_host = conn_config["db_host"]
646 db_port = conn_config["db_port"]
647 db_user = conn_config["db_user"]
648 db_password = conn_config["db_password"]
649 else:
650 return public.returnMsg(False, "未知的数据库类型")
651
652 pgsql_obj = panelPgsql().set_host(host=db_host, port=db_port, database=None, user=db_user, password=db_password)
653 status, err_msg = pgsql_obj.connect()
654 if status is False:
655 return public.returnMsg(False, "连接数据库[{}:{}]失败".format(db_host, int(db_port)))
656
657 db_backup_dir = os.path.join(self._PGSQL_BACKUP_DIR, db_name)
658 if not os.path.exists(db_backup_dir):

Callers

nothing calls this directly

Calls 15

panelPgsqlClass · 0.85
returnMsgMethod · 0.80
readFileMethod · 0.80
ExecShellMethod · 0.80
basenameMethod · 0.80
existsMethod · 0.45
findMethod · 0.45
whereMethod · 0.45
MMethod · 0.45
get_config_optionsMethod · 0.45
joinMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected