前言
場景如下:寫一個jar架包,在一臺Linux服務器上運行,去另一臺Linux服務器上下載文件到本服務器,這兩臺服務器在同一個內網中,先開始使用FTPClient,發現下載速度大約200k/s,都在內網爲啥這麼慢就不清楚了,請大神指導。最後改用SCPClient,即Linux的scp命令,速度就能達到50M/s。
具體實現
- 使用架包
ganymed-ssh2-build210.jar
- 實現代碼
Connection conn = new Connection("IP地址");//目標服務器地址
conn.connect();
boolean isAuthenticated = conn.authenticateWithPassword("用戶名", "密碼");
if (isAuthenticated == false){
throw new IOException("Authentication failed.");
}
SCPClient client = new SCPClient(conn);
client.get("目標服務器文件路徑", "本服務器用來存放文件路徑");//get方法用來將目標服務器的文件下載到本地服務器
client.put("本服務器文件路徑","目標服務器用來存放文件路徑");//put方法用來將本地文件上傳到目標服務器
ch.ethz.ssh2.Session session = conn.openSession();
session.execCommand("rm -rf "目標服務器文件路徑"/*");//這行代碼可以把目標服務器上下載後的文件刪除
conn.close();
session.close();
注意
着重注意get和put方法參數的前後位置。