본문 바로가기

IT/기타

sftp 자바 라이브러리 JSch와 Apache Commons VFS

300x250

 

 

 

SFTP(Secure File Transfer Protocol)는 SSH(File Transfer Protocol)를 이용해 안전하게 파일을 전송하는 프로토콜

 

Java에서 SFTP를 사용하려면 몇 가지 인기 있는 라이브러리를 사용할 수 있습니다.

 

그 중 가장 많이 사용되는 라이브러리는 JSchApache Commons VFS입니다.

 

1. JSch

 

JSch는 JCraft에서 제공하는 순수 Java로 작성된 SSH2 라이브러리로, SFTP를 포함한 다양한 기능을 제공

Maven 의존성 추가

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

 

SFTP 사용 예제

import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import java.io.FileInputStream;

public class SFTPExample {
    public static void main(String[] args) {
        String host = "your.sftp.server";
        int port = 22;
        String user = "yourUsername";
        String password = "yourPassword";
        String localFile = "path/to/local/file";
        String remoteDir = "/path/to/remote/dir/";

        JSch jsch = new JSch();
        Session session = null;
        ChannelSftp channelSftp = null;

        try {
            session = jsch.getSession(user, host, port);
            session.setPassword(password);
            session.setConfig("StrictHostKeyChecking", "no");
            session.connect();

            channelSftp = (ChannelSftp) session.openChannel("sftp");
            channelSftp.connect();
            
            channelSftp.put(new FileInputStream(localFile), remoteDir + "uploaded_file");

            System.out.println("File uploaded successfully");
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            if (channelSftp != null) {
                channelSftp.disconnect();
            }
            if (session != null) {
                session.disconnect();
            }
        }
    }
}

 

 

2. Apache Commons VFS

Apache Commons VFS (Virtual File System)는 파일 시스템의 다양한 타입을 추상화하는 라이브러리로, SFTP를 포함한 다양한 파일 시스템을 지원합니다.

 

Maven 의존성 추가

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-vfs2</artifactId>
    <version>2.8.0</version>
</dependency>

 

SFTP 사용 예제

import org.apache.commons.vfs2.FileObject;
import org.apache.commons.vfs2.FileSystemManager;
import org.apache.commons.vfs2.VFS;

public class SFTPExample {
    public static void main(String[] args) {
        String sftpUri = "sftp://yourUsername:yourPassword@your.sftp.server/path/to/remote/dir/uploaded_file";
        String localFilePath = "path/to/local/file";

        FileSystemManager fsManager = null;
        FileObject localFile = null;
        FileObject remoteFile = null;

        try {
            fsManager = VFS.getManager();
            localFile = fsManager.resolveFile(localFilePath);
            remoteFile = fsManager.resolveFile(sftpUri);

            remoteFile.copyFrom(localFile, Selectors.SELECT_SELF);

            System.out.println("File uploaded successfully");
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            try {
                if (localFile != null) {
                    localFile.close();
                }
                if (remoteFile != null) {
                    remoteFile.close();
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }
}
 

요약

  • JSch: 경량의 순수 Java로 작성된 SSH2 라이브러리. 직접적으로 SSH와 SFTP 프로토콜을 사용하여 세부적인 제어가 가능
  • Apache Commons VFS: 다양한 파일 시스템을 추상화하여 일관된 API를 제공. SFTP를 포함한 여러 파일 시스템 타입을 지원

이 두 라이브러리는 각각의 장단점이 있으므로, 필요에 맞는 라이브러리를 선택하여 사용하면 됩니다.

 

JSch는 더 세부적인 제어가 가능하고, Apache Commons VFS는 더 높은 수준의 추상화를 제공합니다.

 

 

 

 

 

300x250

'IT > 기타' 카테고리의 다른 글

데이터그로스팀 역할?  (1) 2024.11.24
BI (Business Intelligence) 뜻은?  (1) 2024.11.19
공카드번호란?  (0) 2024.11.17
nbase-arc 란  (0) 2024.11.03
SQL 큐브리드 sign 함수 개념, DECODE(SIGN()) 함수 사용방법  (1) 2024.10.22