我已通过 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.php
bingo 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 协议允许仅传输部分文件以进行恢复)。