通过java程序Rsync-远程连接故障问题
我正在通过java应用程序运行rsync Java应用程序将与远程计算机同步文件。在连接失败测试期间,我们注意到通过java程序运行rsync时出现了一个问题。如果同步过程中存在任何连接问题,则在源端运行的java应用程序不会收到任何错误消息 关于测试场景的简要详细信息:通过java程序Rsync-远程连接故障问题,java,solaris,rsync,Java,Solaris,Rsync,我正在通过java应用程序运行rsync Java应用程序将与远程计算机同步文件。在连接失败测试期间,我们注意到通过java程序运行rsync时出现了一个问题。如果同步过程中存在任何连接问题,则在源端运行的java应用程序不会收到任何错误消息 关于测试场景的简要详细信息: 我们运行Java程序 java程序启动rsync命令并将大量文件从源同步到远程目标 在同步过程中,我们运行ps-ef | grep rsync,检查进程是否同时在(源端和目的端)运行。两边的rsync进程都在运行 我们在目标机
ps-ef | grep rsync
,检查进程是否同时在(源端和目的端)运行。两边的rsync进程都在运行kill-9
在Java端,我建议创建两个额外的线程来使用进程p的p.getInputStream()和p.getErrorStream()流。我认为这有助于让你感觉到更多的爱和关怀 类似这样的事情(为了简单起见,我忽略了IOExceptions——您必须处理它们!):
在Java端,我建议创建两个额外的线程来使用进程p的p.getInputStream()和p.getErrorStream()流。我认为这有助于让你感觉到更多的爱和关怀 类似这样的事情(为了简单起见,我忽略了IOExceptions——您必须处理它们!):
谢谢回复,线程方法对我也不起作用。看起来rsync中有问题。如果我们使用rsync compress选项(-z),它是如何工作的。源RSYC现在能够检测到错误。例如:rsync-abvrz--delete/source//dest/谢谢您的回复,线程方法对我也不起作用。看起来rsync中有问题。如果我们使用rsync compress选项(-z),它是如何工作的。源RSYC现在能够检测到错误。例如:rsync-abvrz--delete/source//dest/
final Process p = Runtime.exec("rsync"); // however you do this...
Runnable consumeIn = new Runnable() {
public void run() {
InputStream in = p.getInputStream();
InputStreamReader isr = new InputStreamReader(in, "UTF-8");
BufferedReader br = new BufferedReader(isr);
String line;
while ( (line = br.readLine()) != null ) {
// Throw away the data? Or do something with it if you like!
}
}
};
Runnable consumeErr = new Runnable() {
public void run() {
InputStream in = p.getErrorStream();
// etc... (very similar to consumeIn)
}
};
new Thread(consumeIn).start();
new Thread(consumeErr).start();