我想从基于 Spring 的 webapp 调用 mysqldump 并将输出写入文件。我希望能够向用户提供在服务器上创建的文件的下载链接。
我尝试运行以下命令:
Runtime.getRuntime().exec("/usr/bin/mysqldump -u <username> -p<password> <db_name> >" + fileName);
Runtime.getRuntime().exec("mysqldump -u <username> -p<password> db_name >" + fileName);
我尝试了以下文件名值。
fileName = "mysql.sql";
fileName = "/tmp/mysql.sql";
fileName = servletContext.getRealPath("") + "/mysql.sql";
但是命令不成功。process.exitValue() 返回错误代码 2 或 6。
ProcessBuilder pb = new ProcessBuilder("/usr/bin/mysqldump", " -u ", "<username>", " -p<password>", "<db_name>", " > ", fileName);
pb.redirectErrorStream(true); // equivalent of 2>&1
Process p = pb.start();
p.waitFor();
这也无济于事。
有人可以告诉我从 webapp 运行此类命令的最佳方法是什么吗?应该在哪里创建输出文件?上面的命令有什么问题?
我需要能够在不同的系统(Linux、Windows)上运行它。webapp 在任一系统上运行。如果需要,我可以在属性文件中抽象出 mysqldump 路径。但是我该如何做呢?