通过Java编程语言执行scp传输的最佳方法是什么?我似乎可以通过JSSE,JSch或充气城堡java库来执行此操作.这些解决方案似乎都没有一个简单的答案.
我最终使用了Jsch - 它非常简单,似乎扩展得非常好(我每隔几分钟就抓取几千个文件).
插件:sshj是唯一理智的选择!请参阅以下示例开始:下载,上传.
看看这里
这是蚂蚁SCP任务的源代码."执行"方法中的代码是它的基本内容.这应该让您对所需要的内容有一个全面的了解.它使用JSch我相信.
或者,您也可以从Java代码直接执行此Ant任务.
我用一些实用方法包装了Jsch,使它更友好并称之为它
Jscp可在此处获取:https://github.com/willwarren/jscp
SCP实用程序tar一个文件夹,压缩它,并将其scp到某处,然后解压缩它.
用法:
// create secure context SecureContext context = new SecureContext("userName", "localhost"); // set optional security configurations. context.setTrustAllHosts(true); context.setPrivateKeyFile(new File("private/key")); // Console requires JDK 1.7 // System.out.println("enter password:"); // context.setPassword(System.console().readPassword()); Jscp.exec(context, "src/dir", "destination/path", // regex ignore list Arrays.asList("logs/log[0-9]*.txt", "backups") );
还包括有用的类 - Scp和Exec,以及TarAndGzip,它们的工作方式几乎相同.
这是高级解决方案,无需重新发明。又快又脏!
1)首先,转到http://ant.apache.org/bindownload.cgi并下载最新的Apache Ant二进制文件。(如今,apache-ant-1.9.4-bin.zip)。
2)解压缩下载的文件并找到JAR ant-jsch.jar(“ apache-ant-1.9.4 / lib / ant-jsch.jar”)。在您的项目中添加此JAR。也是ant-launcher.jar和ant.jar。
3)转到Jcraft jsch SouceForge项目并下载jar。如今, jsch-0.1.52.jar。还要在您的项目中添加此JAR。
现在,您可以轻松地在Java代码中使用Ant类Scp来通过网络复制文件或 SSHExec用于SSH服务器中的命令,轻松地用于。
4)代码示例Scp:
// This make scp copy of // one local file to remote dir org.apache.tools.ant.taskdefs.optional.ssh.Scp scp = new Scp(); int portSSH = 22; String srvrSSH = "ssh.your.domain"; String userSSH = "anyuser"; String pswdSSH = new String ( jPasswordField1.getPassword() ); String localFile = "C:\\localfile.txt"; String remoteDir = "/uploads/"; scp.setPort( portSSH ); scp.setLocalFile( localFile ); scp.setTodir( userSSH + ":" + pswdSSH + "@" + srvrSSH + ":" + remoteDir ); scp.setProject( new Project() ); scp.setTrust( true ); scp.execute();