[php] PHP에서 ZIP 파일을 생성한 후 SFTP로 전송하기

이번 포스트에서는 PHP를 사용하여 ZIP 파일을 생성하고, SFTP를 통해 해당 파일을 전송하는 방법에 대해 알아보겠습니다.

1. ZIP 파일 생성하기

먼저, ZIP 파일을 생성하기 위해 PHP 내장 함수인 ZipArchive를 사용합니다. 다음은 파일과 디렉터리를 압축하는 간단한 예제 코드입니다.

<?php
$zip = new ZipArchive();
$zipFileName = 'example.zip';

if ($zip->open($zipFileName, ZipArchive::CREATE) === TRUE) {
    $fileToAdd = 'file.txt';
    $zip->addFile($fileToAdd);
    
    // 디렉터리를 추가하려면 아래 주석을 해제하세요
    // $dirToAdd = 'directory';
    // $zip->addEmptyDir($dirToAdd);

    $zip->close();
    echo 'ZIP 파일이 생성되었습니다.';
} else {
    echo 'ZIP 파일을 생성할 수 없습니다.';
}
?>

2. SFTP로 파일 전송하기

이제 생성된 ZIP 파일을 SFTP를 통해 전송하는 방법에 대해 알아봅시다. 이를 위해 phpseclib 라이브러리를 사용하여 SFTP 접속 및 파일 전송을 수행할 수 있습니다.

composer require phpseclib/phpseclib

다음은 phpseclib를 사용하여 SFTP로 파일을 전송하는 예제 코드입니다.

<?php
use phpseclib\Net\SFTP;

$sftp = new SFTP('SFTP 호스트', 포트);
if (!$sftp->login('사용자명', '비밀번호')) {
    exit('SFTP에 로그인할 수 없습니다.');
}

$localFile = 'example.zip';
$remoteFile = 'remote_example.zip';

if ($sftp->put($remoteFile, $localFile, SFTP::SOURCE_LOCAL_FILE)) {
    echo '파일이 성공적으로 업로드되었습니다.';
} else {
    echo '파일을 업로드하는데 실패했습니다.';
}
?>

위의 코드 예제는 phpseclib를 사용하여 SFTP 서버에 연결하고, put 메소드를 사용하여 로컬에 있는 파일을 원격 SFTP 서버로 전송하는 방법을 보여줍니다.

이제 위의 예제 코드를 참고하여 PHP에서 ZIP 파일을 생성하고 SFTP를 통해 전송하는 방법에 대해 자세히 알아보았습니다.

참고 자료