前言
场景如下:写一个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方法参数的前后位置。