본문 바로가기

개발중/Java

서로 다른 서버에 파일 업로드

728x90
반응형

🖤 글이 도움이 되었다면 유튜브 클릭 해주세요 🖤

A1 개발 서버와 A2 의 운영 서버가 같이 구동 될 때,

각각의 서버에서 업로드 받은 파일을 B1 에 업로드 시킨 후 B1 에서 주기적으로 프로세스를 돌리려고 한다.

 

다영 선배가 알려준 참고 사이트 


sftp를 활용하기 위해서는 jsch 라이브러리가 필요.

🟡 maven 

 

<dependency>
	<groupId>com.jcraft</groupId>
	<artifactId>jsch</artifactId>
	<version>0.1.55</version>
</dependency>


 

🟡 프로세스 코드

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;


  // 다른서버 SSH 전송
@SuppressWarnings("finally")
public String sftpConnect(String fileName) {
    String rfileName = "";
    try {
    
      //파일을 이동시키고자 하는 위치
      String des = "/root/"; 
      
       //파일이 존재 하는 위치
      String src = "/home/tomcat/webapps/Anticall/upload/"; 
      
      
      JSch jsch = new JSch();
      
      //user, ip, port
      Session session = jsch.getSession("user", "192.168.xxx.xxx", 22);  
      session.setConfig("StrictHostKeyChecking", "no");
      
      //이동시킬 서버의 password
      session.setPassword("password");  

      session.connect();
      Channel channel = session.openChannel("sftp");
      channel.connect();
      ChannelSftp sftpChannel = (ChannelSftp) channel;
      sftpChannel.cd(des); 
      File file = new File(src+fileName);
      FileInputStream fis = new FileInputStream(file);
      sftpChannel.put(fis, file.getName());
      fis.close();

      sftpChannel.disconnect();
      channel.disconnect();
      session.disconnect();   

      rfileName = file.getName();
    } catch(Exception e) {
      logger.error("Exception:",e);
    } finally {
      return rfileName;
    }   
}

▶ StrictHostKeyChecking

 

StrictHostKeyChecking no를 추가하면 접속하는 모든 호스트에 대해 Key 확인을 하지 않습니다.


▶ 선배님 ! SMTP 는 25 니까 25번 포트 이용하면 되나요 ?

 

이메일용 포트가 smtp라고해서 tcp 25번쓰고 

실제로 putty랑 파일질라는 ssh방식이라서 22포트를 사용해 ㅎㅎ 

mysql 포트는 일반적으로 3306쓰고 ㅎㅎ


 

728x90
반응형