개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.09 11:21

ssh2_sftp_rmdir 함수 사용법에 대해 질문드립니다.

목록
  • 패스워드보안성애자 3일 전 2025.05.09 11:21
  • 1
    1
저는 ssh2_sftp_rmdir 함수를 사용하여 SFTP 서버의 디렉토리를 삭제하려고 합니다.
하지만, 이 함수를 사용할 때 디렉토리 내에 파일이 있는 경우 삭제가 실패하는 것을 관찰했습니다.
이러한 경우, ssh2_sftp_rmdir 함수가 어떻게 동작하는지 여쭙니다.

예를 들어, 디렉토리 내에 파일이 하나만 존재하는 경우, ssh2_sftp_rmdir 함수는 디렉토리를 성공적으로 삭제합니다.
그러나, 디렉토리 내에 여러 파일이 존재하는 경우, ssh2_sftp_rmdir 함수는 디렉토리를 삭제하는 대신 에러를 반환합니다.
이러한 경우, ssh2_sftp_rmdir 함수를 사용할 때 디렉토리 내의 파일을 이전하는 방법이 있나요?

또한, ssh2_sftp_rmdir 함수를 사용할 때, 디렉토리 내의 파일을 삭제하기 전에 백업을 하는 방법이 있나요?

    댓글목록

    profile_image
    나우호스팅  3일 전



    ssh2_sftp_rmdir 함수는 디렉토리를 삭제하기 전에 디렉토리 내의 모든 파일을 삭제하지 않습니다. 따라서 디렉토리 내에 파일이 있는 경우 삭제가 실패하는 것을 관찰할 수 있습니다.

    디렉토리 내의 파일을 이전하는 방법은 다음과 같습니다.

    1. ssh2_sftp_readdir 함수를 사용하여 디렉토리 내의 파일 목록을 가져옵니다.
    2. ssh2_sftp_get 함수를 사용하여 디렉토리 내의 파일을 로컬로 복사합니다.
    3. ssh2_sftp_rmdir 함수를 사용하여 디렉토리를 삭제합니다.

    디렉토리 내의 파일을 삭제하기 전에 백업하는 방법은 다음과 같습니다.

    1. ssh2_sftp_readdir 함수를 사용하여 디렉토리 내의 파일 목록을 가져옵니다.
    2. ssh2_sftp_get 함수를 사용하여 디렉토리 내의 파일을 로컬로 복사합니다.
    3. ssh2_sftp_rmdir 함수를 사용하여 디렉토리를 삭제합니다.
    4. 로컬로 복사한 파일을 원래 위치로 복원합니다.

    예제 코드는 다음과 같습니다.

    #hostingforum.kr
    php
    
    $sftp = ssh2_sftp('example.com');
    
    $dir = '/path/to/directory';
    
    
    
    // 디렉토리 내의 파일 목록 가져오기
    
    $files = ssh2_sftp_readdir($sftp, $dir);
    
    
    
    // 디렉토리 내의 파일을 로컬로 복사하기
    
    foreach ($files as $file) {
    
        $local_path = '/path/to/local/directory/' . $file;
    
        $remote_path = $dir . '/' . $file;
    
        ssh2_sftp_get($sftp, $local_path, $remote_path, SSH2_SFTP_STREAM_ALL);
    
    }
    
    
    
    // 디렉토리를 삭제하기
    
    ssh2_sftp_rmdir($sftp, $dir);
    
    
    
    // 로컬로 복사한 파일을 원래 위치로 복원하기
    
    foreach ($files as $file) {
    
        $local_path = '/path/to/local/directory/' . $file;
    
        $remote_path = $dir . '/' . $file;
    
        ssh2_sftp_put($sftp, $remote_path, $local_path, SSH2_SFTP_STREAM_ALL);
    
    }
    
    


    이 예제 코드는 디렉토리 내의 파일을 로컬로 복사하고, 디렉토리를 삭제하고, 로컬로 복사한 파일을 원래 위치로 복원하는 과정을 보여줍니다.

    2025-05-09 11:22

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 18,623건 / 12 페이지

검색

게시물 검색