开发中可能遇到要备份数据库,并删除30天以前备份的数据
下面代码中详细介绍:
![](https://i-blog.csdnimg.cn/blog_migrate/167777e1b007548bac2a60b05b0aef42.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3bc05c540571363f822a003cf7e276ea.png)
下面是完整代码
public static void main(String[] args) {
//格式化日期为yyyy-MM-dd-HH-mm-ss
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
//获取当前时间
Date nowDate = new Date();
//备份的保存位置
String mysqlDumpAddress = "E:\\mysqlDump";
//判断要备份数据库路径是否存在,不存在创建
File file = new File(mysqlDumpAddress);
if (!file.exists()) {
file.mkdirs();
}
//日期格式化为yyyy-MM-dd-HH-mm-ss
String data = simpleDateFormat.format(nowDate);
//文件的命名为yyyy-MM-dd-HH-mm-ss.sql
File datafile = new File(file + File.separator + data + ".sql");
try {
//拼接cmd命令 windows下 cmd /c Linux下 /bin/sh
//-hlocalhost localhost表示本地数据库 -P3306 3306数据库端口 -uroot root数据库用户名 -p123456 123456数据库密码
//windows下 cmd /c
Process exec = Runtime.getRuntime().exec("cmd /c mysqldump -hlocalhost -P3306 -uroot -p123456 user > " + datafile);
//Linux下 /bin/sh
//Process exec = Runtime.getRuntime().exec("/bin/sh mysqldump -hlocalhost -P3306 -uroot -p123456 user > " + datafile);
if (exec.waitFor() == 0) {
System.out.println("数据库备份成功,备份路径为:" + datafile);
}
} catch (IOException ioException) {
ioException.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
//删除30天以前的
Calendar calendar = Calendar.getInstance();
calendar.setTime(nowDate);
//-30表示多少天以前
calendar.add(Calendar.DATE, -30);
Date oldTime = calendar.getTime();
String oldTimeFormat = simpleDateFormat.format(oldTime);
File deleteFile = new File(file + File.separator + oldTimeFormat + ".sql");
Path path = Paths.get(file + File.separator + oldTimeFormat + ".sql");
try {
Files.delete(path);
} catch (IOException ioException) {
System.out.println("数据库备份,删除失败!" + path + "不存在!");
ioException.printStackTrace();
}
deleteFile.delete();
}