Como descompactar arquivos através de uma conexão FTP?

Como descompactar arquivos através de uma conexão FTP?

Conectei-me ao meu servidor remoto via FTP e recebi uma listagem de diretórios. Tenho poucos arquivos zip na lista.

É possível descompactar o arquivo (Ex: test.zip)?. Se sim, qual é o comando?

Responder1

Não é possível descompactar arquivos através de uma conexão FTP. FTP significa "File Transfer Protocol", que foi projetado apenas para transferir e gerenciar parcialmente arquivos remotamente, mas não para executar comandos. Para descompactar um arquivo você teria que executar um programa como tar, bzip2 ou similar, mas isso não é possível através de uma conexão FTP.

Você precisa de outra sessão que permita executar comandos, como SSH. Ou você descompacta o arquivo em sua máquina e transfere o conteúdo via FTP, o que será consideravelmente mais lento se você tiver um grande número de arquivos pequenos devido à sobrecarga do FTP.

Responder2

Resposta um pouco fora de contexto, mas certamente funciona. Se você estiver executando um Apache + php nesse diretório ftp, carregue seu arquivo zip nessa pasta e crie extractor.php:

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

e então clique em url, por exemplo: http://example.com/extractor.phpbingo php extrairá esse zip para você.

Responder3

Você pode fazer isso se montar o recurso FTP usando curlftpfs:

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

então

unzip /path/to/mount/test.zip

Responder4

Seu objetivo é descompactá-lono servidor externo, ou você deseja extrair o conteúdo do arquivopara o seu próprio computador?

O primeiro caso não é resolvido por FTP, mas por SSH ou técnicas semelhantes descritas em outras respostas.

Se você deseja apenas obter o conteúdo descompactado "diretamente" para o seu próprio computador sem primeiro transferir explicitamente os arquivos e depois descompactá-los, você pode, por exemplo, montar o site FTP como uma pasta e descompactá-lo como um arquivo zip normal para um local no seu local computador. Isso vaina práticatransmitir o conteúdo do arquivo diretamente para o programa de descompactação, para que você tecnicamentefazertransfira o arquivo inteiro, mas apenas em seu estado compactado (presumivelmente economizando tráfego) e o conteúdo aparecerá diretamente no seu computador local sem a etapa intermediária explícita.

Não sei como o formato do arquivo zip é especificado apenas para descompactar uma parte de um arquivo zip; se você precisar transferir otodomesmo assim ou apenas a parte compactada correspondente a esse arquivo. Não vejo nenhuma razão técnica real para não ser possível fazer esse tipo de transferência seletiva (o protocolo FTP permite apenas a transferência de arquivos parciais para permitir a retomada).

informação relacionada