springmvc+bootstarp备份与恢复orcle10g数据库实现

8 篇文章 0 订阅
3 篇文章 0 订阅

  此为界面展示,所有代码以上传资源。。

点击打开链接


1,前台页面jsp,为jquery+bootstart方式

databackup.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>数据备份管理</title>
<link href="<%=path%>/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="<%=path%>/bootstrap/css/bootstrap-select.css"
	rel="stylesheet">
<link href="<%=path%>/css/simplify.min.css" rel="stylesheet">
<link href="<%=path%>/css/sweet-alert.css" rel="stylesheet">
<script src="<%=path%>/js/jquery-1.11.1.min.js"></script>
<script src="<%=path%>/js/jquery.form.js"></script>
<script src="<%=path%>/js/jquery.validate.js"></script>
<script src="<%=path%>/bootstrap/js/bootstrap.min.js"></script>
<script src="<%=path%>/bootstrap/js/bootstrap-filestyle.min.js"></script>
<script src='<%=path%>/js/jquery.popupoverlay.min.js'></script>
<script src='<%=path%>/js/jquery.slimscroll.min.js'></script>
<script src='<%=path%>/js/modernizr.min.js'></script>
<script src="<%=path%>/js/simplify/simplify.js"></script>
<script src="<%=path%>/js/sweet-alert.min.js"></script>
<script src="<%=path%>/js/alertBo.js"></script>
<script src="<%=path%>/js/common.js"></script>
<script src="<%=path%>/js/bootstrap-select.js"></script>
<script type="text/javascript">

var btnText = '启动定时备份';
//存在不存在定时备份
var status = '${status}';
$(document).ready(function() {
	//根据不同状态 调用不同方法
	if(status=='1'){
		document.getElementById("bakFileName").value='${fimeName}';
		btnText='关闭定时备份';
		document.getElementById("funBtn").value=btnText;
		$("#funBtn").removeAttr("onclick");
		$("#funBtn").attr("onclick", "doDownTimeBack();");
	}else{
		$("#funBtn").removeAttr("onclick");
		$("#funBtn").attr("onclick", "doStartTimeBack();");
	}
	//每月
		if('${isMonthBack}'==1){
			$("#mYRadio").checked=true;
			
			$("#opHourt").attr("disabled", "true");
			$("#opMinutet").attr("disabled", "true");
			$("#opMz").attr("disabled", "true");
			
			$("#opHourz").attr("disabled", "true");
			$("#opMinutez").attr("disabled", "true");
			$("#bakFileName").attr("disabled", "true");
			
			document.getElementById("opMy").value='${monthBackDay}';
			document.getElementById("opHoury").value='${hour}';
			document.getElementById("opMinutey").value='${mnuite}';
 		}else{
 			$("#mYRadio").checked=false;
	 		}
		$("#mYRadio").on("focus",function(){
			$("#opHourt").attr("disabled", "true");
			$("#opMinutet").attr("disabled", "true");
	        	
			$("#opMy").attr("disabled", "false");
			$("#opHoury").attr("disabled", "false");
			$("#opMinutey").attr("disabled", "false");
	        	
			$("#opMz").attr("disabled", "true");
			$("#opHourz").attr("disabled", "true");
			$("#opMinutez").attr("disabled", "true");
		});
		if(status=='1'){
			$("#mYRadio").attr("disabled", "true");
			$("#opMy").attr("disabled", "true");
			$("#opHoury").attr("disabled", "true");
			$("#opMinutey").attr("disabled", "true");
 		}
		//每日
		if('${isDayBack}'==1){
			$("#mTRadio").attr("checked", "true");
			//每月
			$("#opMy").attr("disabled", "true");
			$("#opHoury").attr("disabled", "true");
			$("#opMinutey").attr("disabled", "true");
			//每周
			$("#mZRadio").attr("disabled", "true");
			$("#opMz").attr("disabled", "true");
			$("#opHourz").attr("disabled", "true");
			$("#opMinutez").attr("disabled", "true");
			
			$("#bakFileName").attr("disabled", "true");
			document.getElementById("opHourt").value='${hour}';
			document.getElementById("opMinutet").value='${mnuite}';
		}else{
			$("#mTRadio").removeAttr("checked");
		}
		
		$("#mTRadio").on("focus",function(){
	        	
			$("#opMy").attr("disabled", "true");
			$("#opHoury").attr("disabled", "true");
			$("#opMinutey").attr("disabled", "true");
	        	
			$("#opMz").attr("disabled", "true");
			$("#opHourz").attr("disabled", "true");
			$("#opMinutez").attr("disabled", "true");
		});
		//每周
		if(status=='1'){
			$("#mTRadio").attr("disabled", "true");
			$("#opHourt").attr("disabled", "true");
			$("#opMinutet").attr("disabled", "true");
 		}
		
		if('${isWeekBack}'==1){
			$("#mZRadio").checked=true;
			$("#opHourt").attr("disabled", "true");
			$("#opMinutet").attr("disabled", "true"); 
	        	
			$("#opMy").attr("disabled", "true");
			$("#opHoury").attr("disabled", "true");
			$("#opMinutey").attr("disabled", "true");
			
			$("#bakFileName").attr("disabled", "true");
			document.getElementById("opMz").value='${weekBackDay}';
			document.getElementById("opHourz").value='${hour}';
			document.getElementById("opMinutez").value='${mnuite}';
 		}else{
 			$("#mZRadio").checked=false;
 		}
});
		
//进度条方法
var p=101;
var stop=1;
function run(){
	p+=4;
	$("#proId").attr("style","width:"+p+"%");
	var timer=setTimeout("run()",500);
	if(p>100&&stop<1){
		p=0;
	}
}
//重置加载
function inBack(){
	$("#tBack tr").remove();
	$.ajax({
		type:"POST",
		dataType : "json",
		url:"<%=path%>/back/inBack.do",
							success : function(result) {//var dataObj = eval("(" + result + ")");
								var back = result.backList;
								var str = "";
								for (var i = 0; i < back.length; i++) {
										str += "<tr οnclick='doBackId(this.id);' id='"+back[i].backid+"'>"
												+ "<td><a href='#'>"+back[i].name +"</a></td><td><a href='#'>"+back[i].cuser+"</a></td><td><a href='#'>"+back[i].ctime+"<a></td>" + "</tr>";
								}

								$(str).appendTo("#tBack");
							},
							error : function() {
								swal({
									title : '提示',
									text : "备份文件出错!",
									type : 'error',
									animation : 'none'
								});
							}

						});
}
//开始备份按钮
function doBackData(){
	swal({
		title : '提示',
		text :  '您确定备份数据库吗?',
		type : 'warning',
		showCancelButton:true,
		confirmButtonColor:'#DD6B55',
		confirmButtonText:"确定"
	},function(){
		document.getElementById("progressId").style.display = 'block';
		p=0;
		stop=0;
		run();
		$.ajax({
			type:"POST",
			dataType : "json",
			url:"<%=path%>/back/doBackData.do",
								success : function(result) {
									
									if (result.status == true) {
										$("#proId").attr("style", "width:0%");
										document.getElementById("progressId").style.display = 'none';
										swal({
											title : '',
											text : result.msg,
											type : 'success',
											animation : 'none'
										});
										setTimeout(function () {
										//成功关闭
											$('#confirmBtn').click();
											inBack();
										},2000);
									} else {
										document.getElementById("progressId").style.display = 'none';
										swal({
											title : '',
											text : result.msg,
											type : 'error',
											animation : 'none'
										});
									}
								},
								error : function() {
									document.getElementById("progressId").style.display = 'none';
									swal({
										title : '提示',
										text : "备份文件出错!",
										type : 'error',
										animation : 'none'
									});
								}

							});

				});
	}

	//Radio点击事件
	var flag = true;
	var radioValue;
	function checkRadio(id) {
		id.checked = flag;
		flag = !flag;
		radioValue = $('input:radio[name="radio"]:checked').val();
		if (radioValue == 1) {
			//每月
			$("#mYRadio").attr("disabled", "true");
			$("#opMy").attr("disabled", "true");
			$("#opHoury").attr("disabled", "true");
			$("#opMinutey").attr("disabled", "true");
			//每周
			$("#mZRadio").attr("disabled", "true");
			$("#opMz").attr("disabled", "true");
			$("#opHourz").attr("disabled", "true");
			$("#opMinutez").attr("disabled", "true");
		}
		if (radioValue == 2) {
			//每日
			$("#mTRadio").attr("disabled", "true");
			$("#opHourt").attr("disabled", "true");
			$("#opMinutet").attr("disabled", "true");
			//每周
			$("#mZRadio").attr("disabled", "true");
			$("#opMz").attr("disabled", "true");
			$("#opHourz").attr("disabled", "true");
			$("#opMinutez").attr("disabled", "true");
		}
		if (radioValue == 3) {
			//每日
			$("#mTRadio").attr("disabled", "true");
			$("#opHourt").attr("disabled", "true");
			$("#opMinutet").attr("disabled", "true");
			//每月
			$("#mYRadio").attr("disabled", "true");
			$("#opMy").attr("disabled", "true");
			$("#opHoury").attr("disabled", "true");
			$("#opMinutey").attr("disabled", "true");
		}
		if (radioValue == undefined) {
			//每月
			$("#mYRadio").removeAttr("disabled");
			$("#opMy").removeAttr("disabled");
			$("#opHoury").removeAttr("disabled");
			$("#opMinutey").removeAttr("disabled");
			//每周
			$("#mZRadio").removeAttr("disabled");
			$("#opMz").removeAttr("disabled");
			$("#opHourz").removeAttr("disabled");
			$("#opMinutez").removeAttr("disabled");
			//每日
			$("#mTRadio").removeAttr("disabled");
			$("#opHourt").removeAttr("disabled");
			$("#opMinutet").removeAttr("disabled");
		}

	}
	//启动定时备份
	function doStartTimeBack() {
		if (radioValue == undefined) {
			swal({
				title : '请选择备份方式',
				text : '',
				type : 'error',
				animation : 'none'
			});
			return;
		}
		//每日时间
		var strRemark1 = $('#opHourt').val() + ":" + $('#opMinutet').val();
		//每月时间
		var strRemark2 = $('#opHoury').val() + ":" + $('#opMinutey').val();
		//
		var strRemark3 = $('#opMy').val();
		//每周时间
		var strRemark4 = $('#opHourz').val() + ":" + $('#opMinutez').val();
		//周
		var strRemark5 = $('#opMz').val();
		//备份文件名称
		var strFileName = $('#bakFileName').val();
		if (strFileName == '') {
			swal({
				title : '请输入备份文件名称',
				text : '',
				type : 'error',
				animation : 'none'
			});
			return;
		}
		//每日
		if ($('#mTRadio').val() == true){
			if ($('#opHourt').val() == '' || $('#opMinutet').val() == ''){
				swal({
					title : '请输入每日备份时间',
					text : '',
					type : 'error',
					animation : 'none'
				});
				return;
			}
		}
		//每月
		if ($('#mYRadio').val() == true){
			if ($('#opHoury').val() == '' || $('#opMinutey').val() == ''){
				swal({
					title : '请输入每月备份时间',
					text : '',
					type : 'error',
					animation : 'none'
				});
				return;
			}
		}
		//每周
		if ($('#mZRadio').val() == true){
			if ($('#opHourz').val() == '' || $('#opMinutez').val() == ''){
				swal({
					title : '请输入每周备份时间',
					text : '',
					type : 'error',
					animation : 'none'
				});
				return;
			}
		}
		//类型
		var backStyle='';
		if(radioValue==1){//每天
			backStyle='1';
			strRemark2='';
			strRemark3='';
			strRemark4='';
			strRemark5='';
		}else if(radioValue==3){//每周
			backStyle='3';
			strRemark1='';
			strRemark2='';
			strRemark3='';
		}else if(radioValue==2){//每月
			backStyle='2';
			strRemark4='';
			strRemark5='';
			strRemark1='';
		}
		document.getElementById("progressId").style.display = 'block';
		p=0;
		stop=0;
		run();
		$.ajax({
			type:"POST",
			dataType : "json",
			data:{
				bakFileName: strFileName,
				 backType: '3',	//dmp
				 backStyle:backStyle,
				 remark1: strRemark1,
				 remark3: strRemark3,
				 remark2: strRemark2,
				 remark5: strRemark5,
				 remark4: strRemark4
			},
			url:"<%=path%>/back/doStartTimeBack.do",
								success : function(result) {
									if (result.status == true) {
										$("#proId").attr("style", "width:0%");
										document.getElementById("progressId").style.display = 'none';
										document.getElementById("funBtn").value= '关闭定时备份';
										status='1';
										//每日
										$("#mTRadio").attr("disabled", "true");
										$("#opHourt").attr("disabled", "true");
										$("#opMinutet").attr("disabled", "true");
										//每月
										$("#mYRadio").attr("disabled", "true");
										$("#opMy").attr("disabled", "true");
										$("#opHoury").attr("disabled", "true");
										$("#opMinutey").attr("disabled", "true");
										//每周
										$("#mZRadio").attr("disabled", "true");
										$("#opMz").attr("disabled", "true");
										$("#opHourz").attr("disabled", "true");
										$("#opMinutez").attr("disabled", "true");
										//
										$("#bakFileName").attr("disabled", "true");
									//	
										swal({
											title : '',
											text : result.msg,
											type : 'success',
											animation : 'none'
										});
										setTimeout(function () {
											window.location.reload();
										//成功关闭
											$('#confirmBtn').click();
										},2000);
									} else {
										document.getElementById("progressId").style.display = 'none';
										swal({
											title : '',
											text : result.msg,
											type : 'error',
											animation : 'none'
										});
									}
								},
								error : function() {
									document.getElementById("progressId").style.display = 'none';
									swal({
										title : '提示',
										text : "备份文件出错!",
										type : 'error',
										animation : 'none'
									});
								}

							});
	}
	
	//取消定时备份
	function doDownTimeBack(){
		swal({
			title : '提示',
			text :  '您确定取消定时备份吗?',
			type : 'warning',
			showCancelButton:true,
			confirmButtonColor:'#DD6B55',
			confirmButtonText:"确定"
		},function(){
		$.ajax({
			type:"POST",
			url:"<%=path%>/back/doEndTimeBack.do",
			dataType:"json",
			success:function(result){
				if(result.status == true){
					document.getElementById("funBtn").value= '启动定时备份';
					//每日
					$("#mTRadio").removeAttr("disabled");
					$("#opHourt").removeAttr("disabled");
					$("#opMinutet").removeAttr("disabled");
					//每月
					$("#mYRadio").removeAttr("disabled");
					$("#opMy").removeAttr("disabled");
					$("#opHoury").removeAttr("disabled");
					$("#opMinutey").removeAttr("disabled");
					//每周
					$("#mZRadio").removeAttr("disabled");
					$("#opMz").removeAttr("disabled");
					$("#opHourz").removeAttr("disabled");
					$("#opMinutez").removeAttr("disabled");
					//
					$("#bakFileName").removeAttr("disabled");
					//document.getElementById("bakFileName").value= '';
					//$('#mTRadio').removeAttr("checked");
					//$('#myRadio').removeAttr("checked");
				//	$('#mZRadio').removeAttr("checked");
					status='0';
					swal({
						title : '',
						text :  result.msg,
						type : 'success',
						animation : 'none'
					});
					setTimeout(function () {
						//inBack();
						window.location.reload();
					//成功关闭
						$('#confirmBtn').click();
					},2000);
				}else{
					swal({
						title : '',
						text :  result.msg,
						type : 'error',
						animation : 'none'
					});
				}
			}
			
		});
		});
	}
	//获取点击选取的行
	var backid;
	function doBackId(id){
		if(id!=''&&id.length>0){
			backid=id;
		}
	}
	//数据库还原
	function doImpSave(){
			// 确定按钮按下的时候
			if (backid!='undefined'&&backid!=undefined) {
				$.ajax({
					type:"POST",
					url:"<%=path%>/back/doImpSaveStart.do",
					dataType:"json",
					data:{backid:backid},
					success:function(result){
						if(result.status == true){
							swal({
								title : '',
								text :  result.msg,
								type : 'success',
								animation : 'none'
							});
							setTimeout(function () {
								inBack();
							//成功关闭
								$('#confirmBtn').click();
							},2000);
						}else{
							swal({
								title : '',
								text :  result.msg,
								type : 'error',
								animation : 'none'
							});
						}
					}
					
				});
			} else {
				swal({
					title : '提示',
					text : "请先选择一个备份文件!",
					type : 'error',
					animation : 'none'
				});
			}
		}
		
</script>

</head>
<body class="overflow-hidden" οnlοad="inBack()">
	<div id="menu"
		style="background-color:#EEEEEE;height:100%;width:30%;float:left;border-left:1px solid #000000;border-right:1px solid #000000;">
		<div align="center" style="overflow: auto; background-color:white;">
			<font size="5">数据备份</font>
		</div>
		<div style="height: 94%; overflow: auto; margin-top: 8px">
			<div style="height:25%;border-bottom:1px solid #ADADAD;">
				<br />
				<div style="height:10%;">
					<label>手动备份:</label>
				</div>
				<br />
				<div style="height:90%">
					<table align="center">
						<tr>
							<td>
								<button type="button" οnclick="doBackData();"
									class="btn btn-success dropdown-toggle btn-sm"
									data-toggle="dropdown">开始备份</button></td>
						</tr>
						<tr height="35px"></tr>
						<tr>
							<td><label>注:文件自动生成,格式为【合同管理系统bak】+时间戳</label>
							</td>
						</tr>
					</table>
				</div>
			</div>
			<div>
				<br />
				<div style="height:10%">
					<label>定时备份:</label>
				</div>
				<br />
				<div style="height:90%">
					<table align="center">
						<tr>
							<td><label>备份方式:</label>
							</td>
							<td><label><input type="radio" checked="checked" />dmp</label>
							</td>
						</tr>
						<tr height="10px"></tr>
						<tr>
							<td><label>备份文件名称:</label>
							</td>
							<td><input id="bakFileName" type="text" class="form-control"
								placeholder="请填写备份文件名称" />
							</td>
						</tr>
						<tr height="10px"></tr>
						<tr>
							<td><label><input id='mTRadio'
									οnclick="checkRadio(this);" type="radio" name="radio" value="1" />每日</label>
							</td>
							<td><select id='opHourt'>
									<option value=""></option>	
									<option>00</option>
									<option>01</option>
									<option>02</option>
									<option>03</option>
									<option>04</option>
									<option>05</option>
									<option>06</option>
									<option>07</option>
									<option>08</option>
									<option>09</option>
									<option>10</option>
									<option>11</option>
									<option>12</option>
									<option>13</option>
									<option>14</option>
									<option>15</option>
									<option>16</option>
									<option>17</option>
									<option>18</option>
									<option>19</option>
									<option>20</option>
									<option>21</option>
									<option>22</option>
									<option>23</option>

							</select> : <select id='opMinutet'>
									<option value=""></option>
									<option>00</option>
									<option>15</option>
									<option>20</option>
									<option>30</option>
									<option>45</option>
							</select></td>
						</tr>
						<tr height="10px"></tr>
						<tr>
							<td><label><input id='mYRadio'
									οnclick="checkRadio(this)" type="radio" name="radio" value="2" />每月</label>
							</td>
							<td><select id='opMy'>
									<option value=""></option>
									<option>01</option>
									<option>02</option>
									<option>03</option>
									<option>04</option>
									<option>05</option>
									<option>06</option>
									<option>07</option>
									<option>08</option>
									<option>09</option>
									<option>10</option>
									<option>11</option>
									<option>12</option>
									<option>13</option>
									<option>14</option>
									<option>15</option>
									<option>16</option>
									<option>17</option>
									<option>18</option>
									<option>19</option>
									<option>20</option>
									<option>21</option>
									<option>22</option>
									<option>23</option>
									<option>24</option>
									<option>25</option>
									<option>26</option>
									<option>27</option>
									<option>28</option>
									<option>29</option>
									<option>30</option>
									<option>31</option>
							</select> - <select id='opHoury'>
									<option value=""></option>
									<option>00</option>
									<option>01</option>
									<option>02</option>
									<option>03</option>
									<option>04</option>
									<option>05</option>
									<option>06</option>
									<option>07</option>
									<option>08</option>
									<option>09</option>
									<option>10</option>
									<option>11</option>
									<option>12</option>
									<option>13</option>
									<option>14</option>
									<option>15</option>
									<option>16</option>
									<option>17</option>
									<option>18</option>
									<option>19</option>
									<option>20</option>
									<option>21</option>
									<option>22</option>
									<option>23</option>
							</select> - <select id='opMinutey'>
									<option value=""></option>
									<option>00</option>
									<option>15</option>
									<option>30</option>
									<option>45</option>
							</select></td>
						</tr>
						<tr height="10px"></tr>
						<tr>
							<td><label><input id='mZRadio'
									οnclick="checkRadio(this)" name="radio" type="radio" value="3" />每周</label>
							</td>
							<td><select id='opMz'>
									<option value=""></option>
									<option>周日</option>
									<option>周一</option>
									<option>周二</option>
									<option>周三</option>
									<option>周四</option>
									<option>周五</option>
									<option>周六</option>

							</select> - <select id='opHourz'>
									<option value=""></option>
									<option>00</option>
									<option>01</option>
									<option>02</option>
									<option>03</option>
									<option>04</option>
									<option>05</option>
									<option>06</option>
									<option>07</option>
									<option>08</option>
									<option>09</option>
									<option>10</option>
									<option>11</option>
									<option>12</option>
									<option>13</option>
									<option>14</option>
									<option>15</option>
									<option>16</option>
									<option>17</option>
									<option>18</option>
									<option>19</option>
									<option>20</option>
									<option>21</option>
									<option>22</option>
									<option>23</option>
							</select> - <select id='opMinutez'>
									<option value=""></option>
									<option>00</option>
									<option>15</option>
									<option>30</option>
									<option>45</option>
							</select></td>
						</tr>
						<tr height="10px"></tr>
						<tr>
							<td>
								<input id="funBtn" type="button"  class="btn btn-success dropdown-toggle btn-sm"
									data-toggle="dropdown" value="启动定时备份" /></td>
						</tr>
					</table>
				</div>
			</div>

		</div>
	</div>

	<div id="content"
		style="height: 100%; width: 40%; float: right;border-left:1px solid #000000;border-right:1px solid #000000;">
		<div id="tagContent">
			<div
				style="background-color:#EEEEEE;height:5%;border-bottom:1px solid #000000;">
				<table>
					<tr>
						<td>
							<div class="search-input">
								<input type="text" class="form-control input-sm inline-block">
								<a href="#" class="input-icon text-normal"><i
									class="ion-ios7-search-strong"></i> </a>
							</div>
						</td>
					</tr>
				</table>
			</div>
				</div>
			</div>
		</div>
	</div>

	<div id="contractcost" style="height:100%;">
		<div align="center" style="background-color:white;">
			<font size="5">数据还原</font>
		</div>
		<div class="search-input">
			<label>按名称搜索:</label> <input type="text"
				class="form-control input-sm inline-block"> <a href="#"
				class="input-icon text-normal"><i class="ion-ios7-search-strong"></i>
			</a>
		</div>
		<div id="backDiv" style="height: 89%; overflow: auto;">
			<table class="table" align="center" border="0">
				<thead>
					<tr>
						<th>文件名</th>
						<th>备份人</th>
						<th>备份时间</th>
					</tr>
				</thead>
				<tbody id='tBack'>
					
				</tbody>
			</table>
		</div>
		<div align="center">
			<input class="btn btn-success dropdown-toggle btn-sm" data-toggle="dropdown" οnclick="doImpSave();" type="button" value="开始还原" />
		</div>
	</div>

	<%-- 备份时进度条展示 Strat--%>
	<div id="progressId" class="modal">
		<div class="modal-dialog modal-lg">
			<div class="modal-content">
				<div class="modal-header">
					<h5 style="text-align:center;color: red" class="modal-title">
						正在备份中,请勿刷新页面...
						</h4>
				</div>
				<div class="modal-body">
					<div class="progress progress-striped active">
						<div class='bar'></div>
						<div id="proId" class="progress-bar progress-bar-success"
							role="progressbar" aria-valuenow="60">
							<span class="sr-only">40% 完成</span>
						</div>
					</div>
				</div>
			</div>
		</div>
	</div>
	<%-- 备份时进度条展示 end--%>

</body>
</html>
2,界面展示

3,点击手动备份界面展示


4,备份成功的压缩包展示


5,手动备份成功展示


6,数据库恢复展示


资源缺少定时备份model  ,


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值