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.php
bingo 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).