千家信息网

数据库自动备份与手动备份功能的实现

发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,前端代码:function createBackUp(){var path=$("#path").val();$.post("dataBack",{'path' : path}, function(d
千家信息网最后更新 2025年01月22日数据库自动备份与手动备份功能的实现

前端代码:

function createBackUp(){

var path=$("#path").val();

$.post("dataBack",{

'path' : path

}, function(data) {

if(data==1){

layer.msg("备份成功!",{time: 2000});

}else{

layer.msg("备份失败,该路径不存在!",{time: 2000});

}

}, "text");

}

后端实现:

package com.cloudshield.toolbox4.accountmanage.controller;


import java.io.File;

import java.io.IOException;

import java.io.InputStream;

import java.net.UnknownHostException;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.text.SimpleDateFormat;

import java.util.Properties;

import java.util.Timer;

import java.util.TimerTask;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import org.springframework.context.annotation.Scope;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.ResponseBody;

import com.cloudshield.toolbox4.utils.DateUtils;

/**

*

* @XXX

* @date 2016-10-28 17:24

*

*/

@Controller

@RequestMapping("/")

@Scope("prototype")

public class DataBackpController {

private static final int BACKUP_SUCCESS=1;/**表示备份成功*/

private static final int BACKUP_ERROR=0;/**表示备份失败*/

/**手动去备份*/

@ResponseBody

@RequestMapping(value="/dataBack",method = RequestMethod.POST)

public Integer dataBack(HttpServletRequest request,HttpSession session,String time){

Connection conn = null;

try{ /**读取备份路径*/

String path = request.getParameter("path");

/**读取配置文件*/

InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("conn.properties");

Properties p = new Properties();

try {

p.load(inputStream);

} catch (IOException e1) {

e1.printStackTrace();

}

/**获取用户名密码以及路径*/

String driverName = p.getProperty("c3p0.driverClass");

String userName=p.getProperty("c3p0.user");

String passWord=p.getProperty("c3p0.password");

String url = p.getProperty("c3p0.jdbcUrl");

Class.forName(driverName).newInstance();

conn= DriverManager.getConnection(url,userName,passWord);

backData(path,getDbName(), conn,time);

return BACKUP_SUCCESS;


}catch(Exception e){

e.printStackTrace();

}finally{

try{conn.close();}catch(Exception e){}

}

return BACKUP_ERROR;

}

/**时间设置自动备份*/

@ResponseBody

@RequestMapping(value="/setAutoBackUp",method = RequestMethod.POST)

public Integer setAutoBackUp(HttpServletRequest request,HttpSession session){

try{

Timer timer = new Timer();

final String setupstime = request.getParameter("time");

final String path = request.getParameter("path");

TimerTask task =new TimerTask(){

public void run(){

Connection conn = null;

/**读取配置文件*/

InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("conn.properties");

Properties p = new Properties();

try {

p.load(inputStream);

/**获取用户名密码以及路径*/

String driverName = p.getProperty("c3p0.driverClass");

String userName=p.getProperty("c3p0.user");

String passWord=p.getProperty("c3p0.password");

String url = p.getProperty("c3p0.jdbcUrl");

Class.forName(driverName).newInstance();

conn= DriverManager.getConnection(url,userName,passWord);

backData(path,getDbName(),conn,setupstime);

} catch (Exception e1) {

e1.printStackTrace();

}finally{

try{conn.close();}catch(Exception e){}

}

}

};

if(setupstime!=null&&setupstime.equals("oneday")){

timer.scheduleAtFixedRate(task,DateUtils.getOneday(),DateUtils.getOneday());

}

if(setupstime!=null&&setupstime.equals("week")){

timer.scheduleAtFixedRate(task,DateUtils.getWeek(),DateUtils.getWeek());

}

if(setupstime!=null&&setupstime.equals("halfamonth")){

timer.scheduleAtFixedRate(task,DateUtils.getHalfamonth(),DateUtils.getHalfamonth());

}

if(setupstime!=null&&setupstime.equals("onemonth")){

timer.scheduleAtFixedRate(task,DateUtils.getMonth(),DateUtils.getMonth());

}

if(setupstime!=null&&setupstime.equals("halfayear")){

timer.scheduleAtFixedRate(task,DateUtils.getHalfayear(),DateUtils.getHalfayear());

}

if(setupstime!=null&&setupstime.equals("oneyear")){

timer.scheduleAtFixedRate(task,DateUtils.getOneYear(),DateUtils.getOneYear());

}

return BACKUP_SUCCESS;


}catch(Exception e){

e.printStackTrace();

}

return BACKUP_ERROR;

}

/**备份方法*/

public String backData(String path,String db_name,Connection conn,String time) throws Exception{

/**要返回备份名称*/

String bk_name = "";

/**与数据库进行操作*/

PreparedStatement stmt = null;

String sql = "";

try{

File databasePath = new File(path);

if(!databasePath.exists()){

databasePath.mkdir();

databasePath.setWritable(true);

}

String file = new SimpleDateFormat("yyyyMMddHHmmss").format(new java.util.Date())+".bak";

if(time!=null&&time!=""){

file="zdbf"+file;

}

File newFile=new File(path+File.separator+file);

newFile.createNewFile();

newFile.setWritable(true);

sql = "backup database "+db_name+" to disk=N'"+path+File.separator+file+"' with format,name=N'full backup of "+db_name+"'";

stmt = conn.prepareStatement(sql);

stmt.executeUpdate();

bk_name = file;

}catch(Exception e){

e.printStackTrace();

throw e;

}

finally

{

try{stmt.close();} catch(Exception e){}

}

return bk_name;

}

/**获取要备份的数据库名字*/

public String getDbName(){

/**读取配置文件*/

InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("other.properties");

Properties p = new Properties();

try {

p.load(inputStream);

} catch (IOException e1) {

e1.printStackTrace();

}

String dbname=p.getProperty("dbName");

return dbname;

}

/**这里不指定post或者get方式的话,默认2中方式都可以*/

@RequestMapping(value = "/autoBackupPage", produces="text/html;charset=UTF-8")

public String autoBackupPage(HttpServletRequest request, HttpServletResponse response) throws UnknownHostException, IOException{

return "jsp/accountManage/backupWindow";

}

/**跳转数据备份的主页面*/

@RequestMapping(value = "/toBackupPage", produces="text/html;charset=UTF-8")

public String toBackupPage(HttpServletRequest request, HttpServletResponse response) throws UnknownHostException, IOException{

return "jsp/accountManage/backUp";

}

}

备份 数据 文件 路径 配置 数据库 成功 密码 方式 用户 用户名 手动 主页 代码 前端 名字 名称 数据备份 方法 时间 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 全军未在数据库的职工 如果更高的网络技术浸入银行 我的世界屌德斯的服务器 ios网络安全知识 搭建sk5找哪家云服务器 晋城2020国家网络安全周 危害网络安全由什么机关处罚 电信网络技术入股 打开一次数据库查询多个表 常用的软件开发模型的特点 大尚网络技术有限公司深圳 软件开发私活定金 如何启动吴福气数据库 北京应用软件开发费用 进出口银行软件开发招聘 redis国产数据库 宁夏gps时钟同步数显钟服务器 关于网络安全的四级听力题 数据库社区门诊管理系统设计 安徽建筑大学图书馆中文数据库 计算机和网络安全有关吗 一个数据库可包含多少数据表 交通局网络安全工作方案 公安局举办网络安全宣传标语 网络安全同心同行可以写什么内容 德玛西亚服务器在哪个省 编程数据库怎么读 网络安全白无常 诺基亚无线软件开发岗 银行网络安全保障活动方案
0