[java] Apache Commons VFS를 사용한 SFTP 파일 전송

이번 포스트에서는 Java에서 SFTP(SSH File Transfer Protocol)를 사용하여 파일을 전송하는 방법을 알아보겠습니다. SFTP는 SSH 프로토콜을 기반으로 하는 안전한 파일 전송 방법이며, Apache Commons VFS를 사용하여 손쉽게 구현할 수 있습니다.

Apache Commons VFS란?

Apache Commons VFS는 다양한 파일 시스템에 대한 일관된 인터페이스를 제공하는 라이브러리입니다. 이를 사용하면 로컬 파일 시스템뿐만 아니라 FTP, SFTP, HTTP, HDFS 등 다양한 파일 시스템에 접근할 수 있습니다.

의존성 추가

먼저, Apache Commons VFS를 사용하기 위해 Maven 또는 Gradle 프로젝트의 의존성에 다음을 추가해야 합니다.

Maven 의존성 추가

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

Gradle 의존성 추가

implementation 'org.apache.commons:commons-vfs2:2.7.0'

SFTP 파일 전송

이제 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) {
        try {
            // SFTP 서버 접속 정보 설정
            String hostname = "your_sftp_hostname";
            String username = "your_sftp_username";
            String password = "your_sftp_password";
            String privateKeyPath = "path_to_private_key";

            // 파일 전송을 위한 로컬 파일 경로와 SFTP 서버의 파일 경로
            String localFilePath = "path_to_local_file";
            String remoteFilePath = "path_to_remote_file";

            // 파일 시스템 매니저 생성
            FileSystemManager fsManager = VFS.getManager();

            // SFTP 파일 객체 생성
            String sftpUrl = "sftp://" + username + ":" + password + "@" + hostname + "/" + remoteFilePath;
            FileObject remoteFile = fsManager.resolveFile(sftpUrl);

            // 로컬 파일 객체 생성
            FileObject localFile = fsManager.resolveFile(localFilePath);

            // 파일 전송 시작
            remoteFile.copyFrom(localFile, new AllFileSelector());

            System.out.println("파일 전송 완료!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

위의 코드에서 your_sftp_hostname, your_sftp_username, your_sftp_password, path_to_private_key, path_to_local_file, path_to_remote_file를 실제 값으로 대체해야 합니다.

위의 코드는 주어진 로컬 파일을 SFTP 서버로 복사하는 간단한 예제입니다.

요약

이번 포스트에서는 Apache Commons VFS를 사용하여 Java에서 SFTP 파일 전송을 어떻게 구현하는지 알아보았습니다. Apache Commons VFS는 다양한 파일 시스템에 대한 일관된 인터페이스를 제공하여 다른 파일 시스템으로의 전환이 쉽고 편리합니다.

더 자세한 내용은 Apache Commons VFS 공식 문서를 참조하십시오.