Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将远程服务器目录复制到本地计算机_Java_File_Copy_Directory_Xcopy - Fatal编程技术网

Java 将远程服务器目录复制到本地计算机

Java 将远程服务器目录复制到本地计算机,java,file,copy,directory,xcopy,Java,File,Copy,Directory,Xcopy,我们有一个体系结构,其中有数百个java组件部署在多个服务器上(40多个)。业务流程涉及数据从一个组件传递到另一个组件。每个组件都会输出日志。每次出现问题时,我都必须转到各种服务器日志目录(都映射为不同的网络驱动器)并查看日志文件 我想知道,从40多台服务器上的所有这些文件夹复制到本地机器上的最快方法是什么。我想创建一个可以执行此操作的程序/脚本。我可以在开始研究问题之前运行此脚本 我编写了自己的java程序,并使用FileUtils.copyDirectory。使用40多个源目录和我的本地目标

我们有一个体系结构,其中有数百个java组件部署在多个服务器上(40多个)。业务流程涉及数据从一个组件传递到另一个组件。每个组件都会输出日志。每次出现问题时,我都必须转到各种服务器日志目录(都映射为不同的网络驱动器)并查看日志文件

我想知道,从40多台服务器上的所有这些文件夹复制到本地机器上的最快方法是什么。我想创建一个可以执行此操作的程序/脚本。我可以在开始研究问题之前运行此脚本

我编写了自己的java程序,并使用FileUtils.copyDirectory。使用40多个源目录和我的本地目标目录在循环中调用。不幸的是,如果源文件被写入,FileUtils.copyDirectory将引发异常

如果我能实现一个解决方案,使我的故障排除过程跨越这些文件,这将是一个巨大的帮助

这是在Windows上

我熟悉java。我可以试试其他语言。请不要建议购买任何产品。这只是一个开发人员黑客,我正在考虑开发它来解决我的问题。

您可以尝试以下方法: 这是我用来从单一来源获取服务器日志文件的一种方法,但可以对其进行修改,以获取所需数量的日志文件。请原谅这种格式,因为这是我使用的格式,我觉得很舒服

使用的参考链接:

您可以尝试以下方法: 这是我用来从单一来源获取服务器日志文件的一种方法,但可以对其进行修改,以获取所需数量的日志文件。请原谅这种格式,因为这是我使用的格式,我觉得很舒服

使用的参考链接:

public static int extraction()
{
    String hostname = "*server host name*";

    String username = "*enter username*";
    String password = "*enter password*";

    String copyFrom = "*server path for example /home/file/abc.png *";
    String copyTo = "*local path for example C:\\Documents *"; 

    JSch jsch = new JSch();
    Session session = null;
    System.out.println("Trying to connect.....");
    try 
    {
        session = jsch.getSession(username, hostname, 22);
        session.setConfig("StrictHostKeyChecking", "no");
        session.setPassword(password);
        session.connect(); 
        Channel channel = session.openChannel("sftp");
        channel.connect();
        ChannelSftp sftpChannel = (ChannelSftp) channel; 
        sftpChannel.get(copyFrom, copyTo);
        sftpChannel.exit();
        session.disconnect();

    } 

    catch (JSchException e) 
    {
        e.printStackTrace();  
    } 
    catch (SftpException e) 
    {
        e.printStackTrace();
    }
    System.out.println("Done !!");
    return 0;
}