import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Date;
public class BackDataHelper {
private String sqlPath="C:\\mysql\\bin\\";
private String userName="user1";
private String password="123456";
private String dataName="datatest";
private String folderName;
private String backPath;
private String ip="127.0.0.1";
private String port="3306";
public String getBackPath() {
return backPath;
}
public void setBackPath(String backPath) {
this.backPath = backPath;
}
public String getFolderName() {
return folderName;
}
public void setFolderName(String folderName) {
this.folderName = folderName;
}
public String getDataName() {
return dataName;
}
public void setDataName(String dataName) {
this.dataName = dataName;
}
public String getSqlPath() {
return sqlPath;
}
public void setSqlPath(String sqlPath) {
this.sqlPath = sqlPath;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getPort() {
return port;
}
public void setPort(String port) {
this.port = port;
}
public BackDataHelper(String sqlPath,String ip,String port,String backPath){
this.sqlPath=sqlPath;
this.ip=ip;
this.port=port;
this.folderName=getDateTime(new Date());
this.backPath=backPath;
}
public BackDataHelper(String sqlPath,String ip,String port,String dataName,String backPath){
this.sqlPath=sqlPath;
this.ip=ip;
this.port=port;
this.dataName=dataName;
this.folderName=getDateTime(new Date());
this.backPath=backPath;
}
public BackDataHelper(String backPath){
this.folderName=getDateTime(new Date());
this.backPath=backPath;
}
private String getDateTime(Date date) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd_HHmmss");
String returnValue = "";
if (date != null) {
returnValue = df.format(date);
}
return (returnValue);
}
/**
* 备份
*/
public void executExport() throws Exception {
String path=this.backPath+"\\"+this.folderName;
File file = new File(path);
if(!file.exists()){
file.mkdirs();
}
String dataPath=path+"\\data.sql";
String exec = "cmd /c " + this.sqlPath + "mysqldump.exe " + "-u" +this.userName + " " + "-p" + this.password + " " + "-h" + this.ip + " " + "-P" + this.port
+ " " + dataName + " " + ">" +dataPath;
Process p = Runtime.getRuntime().exec(exec);
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String readLine = br.readLine();
while (readLine != null) {
readLine = br.readLine();
}
if(br!=null){
br.close();
}
GenerateKey.createEncrypt(dataPath);
exec = "xcopy D:\\wwwroot\\"+this.dataName+"\\product\\*.* "+path+"\\product\\*.*/e";
p = Runtime.getRuntime().exec(exec);
br = new BufferedReader(new InputStreamReader(p.getInputStream()));
readLine = br.readLine();
while (readLine != null) {
readLine = br.readLine();
}
if(br!=null){
br.close();
}
}
/**
* 还原
*/
public void executImport(String path) throws Exception {
String temppath = path+ "\\" + "temp_data.sql";
GenerateKey.createDataDecrypt(path+"\\data.sql",temppath);
String exec = "cmd /c " + this.sqlPath + "mysql.exe " + "-u" + this.userName + " " + "-p" + this.password + " " + "-h" + " " + this.ip + " " + this.dataName + " " + "<" + temppath;
Process p = Runtime.getRuntime().exec(exec);
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String readLine = br.readLine();
while (readLine != null) {
readLine = br.readLine();
}
if(br!=null){
br.close();
}
File f1 = new File(temppath);
if(f1.isFile()){
f1.delete();
}
exec = "xcopy "+path+"\\product\\*.* D:\\wwwroot\\" + this.dataName + "\\product\\*.*/e";
p = Runtime.getRuntime().exec(exec);
br = new BufferedReader(new InputStreamReader(p.getInputStream()));
readLine = br.readLine();
while (readLine != null) {
readLine = br.readLine();
}
if(br!=null){
br.close();
}
}
public static void main(String[] args) {
try {
GenerateKey.getGenerateKey();
BackDataHelper bdh=new BackDataHelper("D:\\wwwroot\\test\\dbbackup");
//bdh.executExport();
bdh.executImport("D:\\wwwroot\\test\\dbbackup\\2012-11-19_143339");
} catch (Exception e) {
e.printStackTrace();
}
}
}