簡體   English   中英

將遠程服務器目錄復制到本地計算機

[英]Copy remote server directories to local machine

我們有一個架構,其中在多個服務器上部署了數百個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;
}

這是我曾經從單一來源獲取服務器日志文件的一種方法,但是可以對其進行重新設計以獲取所需的數量。 請原諒格式,因為這是我使用的格式,覺得很舒服。

使用的參考鏈接: https : //vinaydvd.wordpress.com/2013/12/08/copying-files-from-a-remote-linux-server-to-local-windows-server-using-java/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM