使用Java Runtime执行docker下的mysqldump

Runtime直接使用 docker exec mysql mysqldump -u%s -p%s cblog > %s(%s是需要填充的数据),命令无法执行并且不会报错,需要使用字符串数组加入"sh", "-c",具体代码示例:

java 复制代码
    /**
     * MySQL数据备份
     *
     * @param dataPath 备份文件的保存路径
     * @throws IOException
     */
    private void backupData(String dataPath) throws IOException {
        long start = System.currentTimeMillis();
        String cmd = String.format("docker exec mysql mysqldump -u%s -p%s cblog > %s", dataSourceProperties.getUsername(), dataSourceProperties.getPassword(), dataPath);
        String[] cmds = {"sh", "-c", cmd};
        log.debug("欲执行命令:{}", cmd);
        try (InputStream inputStream = Runtime.getRuntime().exec(cmds).getInputStream();
             InputStreamReader inputStreamReader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
             BufferedReader bufferedReader = new BufferedReader(inputStreamReader);) {
            String line = bufferedReader.readLine();
            while (line != null) {
                log.debug(line);
                line = bufferedReader.readLine();
            }
        }
        long end = System.currentTimeMillis();
        log.info("mysql备份命令执行成功,耗时:{}ms", end - start);
    }
相关推荐
枫叶落雨2222 分钟前
06kafka及异步通知文章上下架
java
2302_799525741 小时前
【MySQL】MySQL是如何传输数据的?
数据库·mysql
Lizhihao_2 小时前
JAVA-Thread类实现多线程
java·开发语言
编程毕设2 小时前
【含文档+PPT+源码】基于微信小程序的驾考在线学习与测试系统的设计与实现
java·学习·eclipse·tomcat
奔跑的废柴3 小时前
LeetCode 112. 路径总和 II java题解
java·算法·leetcode·二叉树
独孤求败Ace3 小时前
第54天:Web攻防-SQL注入&数据类型&参数格式&JSON&XML&编码加密&符号闭合&复盘报告
xml·java·sql
紫乾20144 小时前
idea cpu干到100%的解决方法?
java·ide·intellij-idea
小安同学iter4 小时前
SpringMVC(三)响应处理
java·spring
努力小贼5 小时前
SpringBoot——Maven篇
java·spring boot·maven
XDIGAS5 小时前
Docker 基础命令 - 以 Nginx 实战总结
nginx·docker·容器