java使用Linux命令scp從遠程服務器上傳下載文件

前言

場景如下:寫一個jar架包,在一臺Linux服務器上運行,去另一臺Linux服務器上下載文件到本服務器,這兩臺服務器在同一個內網中,先開始使用FTPClient,發現下載速度大約200k/s,都在內網爲啥這麼慢就不清楚了,請大神指導。最後改用SCPClient,即Linux的scp命令,速度就能達到50M/s。

具體實現

  1. 使用架包ganymed-ssh2-build210.jar
  2. 實現代碼
 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方法參數的前後位置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章