FTP 연결을 통해 파일의 압축을 푸는 방법은 무엇입니까?

FTP 연결을 통해 파일의 압축을 푸는 방법은 무엇입니까?

FTP를 통해 원격 서버에 연결했고 디렉토리 목록을 얻었습니다. 목록에 zip 파일이 거의 없습니다.

파일(예: test.zip)의 압축을 풀 수 있나요?. 그렇다면 명령은 무엇입니까?

답변1

FTP 연결을 통해 파일의 압축을 풀 수 없습니다. FTP는 "파일 전송 프로토콜(File Transfer Protocol)"을 의미하며 원격 측에서 파일을 전송하고 부분적으로 관리하기만 하고 명령을 실행하도록 설계되지 않았습니다. 아카이브의 압축을 풀려면 tar, bzip2 또는 이와 유사한 프로그램을 실행해야 하지만 FTP 연결을 통해서는 불가능합니다.

SSH와 같은 명령을 실행할 수 있는 다른 세션이 필요합니다. 또는 컴퓨터에서 아카이브의 압축을 풀고 FTP를 통해 콘텐츠를 전송합니다. FTP의 오버헤드로 인해 작은 파일 수가 많으면 속도가 상당히 느려집니다.

답변2

문맥에 맞지 않는 답변이 약간 있지만 확실히 작동합니다. 해당 ftp 디렉토리에서 Apache + php를 실행하는 경우 해당 폴더에 zip 파일을 업로드하고 다음을 생성하십시오 extractor.php.

$zip = new ZipArchive;
if ($zip->open('my_zip.zip') === TRUE) {
    $zip->extractTo('/path/to/my/zip');
    $zip->close();
    echo 'ok';
}

그런 다음 URL을 누르십시오. 예: http://example.com/extractor.phpbingo php가 해당 zip을 추출합니다.

답변3

다음을 사용하여 ftp 리소스를 마운트하면 이를 수행할 수 있습니다 curlftpfs.

curlftpfs ftp://ftp.server.org/ /path/to/mountpoint

그 다음에

unzip /path/to/mount/test.zip

답변4

압축을 푸는 것이 목표인가요?외부 서버에서, 아니면 아카이브 콘텐츠를 가져오시겠어요?자신의 컴퓨터에?

첫 번째 경우는 FTP가 아니라 SSH 또는 다른 답변에 설명된 유사한 기술로 해결됩니다.

먼저 파일을 명시적으로 전송한 다음 압축을 풀지 않고 압축이 풀린 콘텐츠를 자신의 컴퓨터에 "직접" 가져오려면 예를 들어 FTP 사이트를 폴더로 마운트하고 로컬 위치에 일반 zip 파일로 압축을 풀 수 있습니다. 컴퓨터. 이것은실제로파일 내용을 압축 해제 프로그램으로 직접 스트리밍하므로 기술적으로하다전체 파일을 전송하되 압축된 상태(아마도 트래픽 저장)로만 전송하면 명시적인 중간 단계 없이 콘텐츠가 로컬 컴퓨터에 직접 나타납니다.

zip 파일의 일부를 압축 해제하는 것과 관련하여 zip 파일 형식이 어떻게 지정되는지 모르겠습니다. 전송해야 하는 경우전체그럼에도 불구하고 파일을 삭제하거나 해당 파일에 해당하는 압축된 부분만 삭제합니다. 이런 종류의 선택적 전송을 수행할 수 없는 이유에 대한 실제 기술적인 이유는 없습니다(FTP 프로토콜은 재개를 가능하게 하기 위해 부분 파일 전송만 허용합니다).

관련 정보