[java] 자바를 통한 scp

Java 프로그래밍 언어를 통해 scp 전송을 수행하는 가장 좋은 방법은 무엇입니까? JSSE, JSch 또는 탄력성 자바 라이브러리를 통해이 작업을 수행 할 수있을 것 같습니다. 이 솔루션들 중 어느 것도 쉬운 답이없는 것 같습니다.



답변

결국 Jsch 를 사용 하게되었습니다. 매우 간단하고 확장이 잘되는 것 같았습니다 (몇 분마다 수천 개의 파일 을 가져 왔습니다 ).


답변

플러그 : sshj는 유일한 건전한 선택입니다! 시작하려면 다음 예제를 참조하십시오. 다운로드 , 업로드 .


답변

여기

이것이 Ants의 SCP 작업의 소스 코드입니다. “execute”메소드의 코드는 그것의 너트와 볼트가있는 곳입니다. 이것은 당신에게 무엇이 필요한지에 대한 공정한 아이디어를 줄 것입니다. 그것은 내가 믿는 JSch를 사용합니다.

또는 Java 코드에서이 Ant 태스크를 직접 실행할 수도 있습니다.


답변

Jsch를 좀 더 친숙하게 만들기 위해 몇 가지 유틸리티 메서드로 래핑하고 호출했습니다.

JSCP

여기에서 사용 가능 : https://github.com/willwarren/jscp

폴더를 tar로 압축하고 어딘가에 scp 한 다음 압축을 푸는 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 프로젝트로 이동 하여 항아리를 다운로드하십시오. 요즘은 jsch-0.1.52.jar 입니다. 또한 이 JAR을 프로젝트에 추가하십시오 .

이제 네트워크를 통한 파일 복사 용 Ant Classes Scp 또는 SSH 서버의 명령 용 SSHExec 을 Java 코드로 쉽게 사용할 수 있습니다 .

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();


답변

는 openssh 프로젝트 목록 여러 자바의 대안은, Java 용 Trilead SSH는 당신이 요구하는지에 맞는 것 같다.


답변

저는 Zehon이라는 SCP가있는이 SFTP API를 사용합니다. 아주 훌륭하고 많은 샘플 코드와 함께 사용하기 쉽습니다. 다음은 http://www.zehon.com 사이트입니다 .