如何通过 FTP 连接解压文件?

如何通过 FTP 连接解压文件?

我已通过 FTP 连接到远程服务器并获得了目录列表。列表中有几个 zip 文件。

是否可以解压该文件(例如:test.zip)?如果可以,命令是什么?

答案1

无法通过 FTP 连接解压文件。FTP 代表“文件传输协议”,其设计仅用于传输和部分管理远程端的文件,而不是执行命令。要解压档案,您必须执行 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 协议允许仅传输部分文件以进行恢复)。

相关内容