如何透過 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 或其他答案中描述的類似技術解決的。

If you just want to get the unzipped contents "directly" to your own computer without first explicitly transferring the files and then unzipping, you could eg mount the FTP site as a folder and unzip it as a normal zip file to a location on your local電腦.這會在實踐中將檔案內容直接串流到解壓縮程序,因此您在技術上傳輸整個文件,但僅以壓縮狀態傳輸(大概可以節省流量),內容將直接顯示在您的本機電腦上,而無需明確的中間步驟。

我不知道如何指定 zip 檔案格式(僅解壓縮 zip 檔案的一部分);如果您需要轉移所有的儘管如此,還是僅保存與該檔案相對應的壓縮部分。我沒有看到任何真正的技術原因來解釋為什麼不可能進行這種選擇性傳輸(FTP 協定只允許傳輸部分檔案以實現復原)。

相關內容