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方法参数的前后位置。

你可能感兴趣的:(后端开发)