回答:
FTP接続でファイルを解凍することはできません。FTPは「ファイル転送プロトコル」の略で、リモートエンドでファイルを転送および部分的に管理するためだけに設計されており、コマンドを実行するためではありません。アーカイブを解凍するには、tar、bzip2などのプログラムを実行する必要がありますが、FTP接続では実行できません。
SSHなどのコマンドを実行できる別のセッションが必要です。または、マシンでアーカイブを解凍し、FTP経由でコンテンツを転送します。FTPのオーバーヘッドのために多数の小さなファイルがある場合、かなり遅くなります。
unzip
。
文脈から少し外れた答えですが、確かに動作します。その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を展開します。
以下を使用してftpリソースをマウントする場合、これを行うことができますcurlftpfs
。
curlftpfs ftp://ftp.server.org/ /path/to/mountpoint
それから
unzip /path/to/mount/test.zip
http://linux.about.com/od/commands/a/blcmdl1_unzipx.htm
シンプルなケース-test.zipを解凍します
外部サーバーで解凍するのが目標ですか、それともアーカイブの内容を自分のコンピューターにプルしますか?
最初のケースはFTPによって解決されるのではなく、SSHまたは他の回答で説明されている同様の手法によって解決されます。
最初に明示的にファイルを転送してから解凍せずに、解凍したコンテンツを「直接」自分のコンピューターに取得したい場合は、FTPサイトをフォルダーとしてマウントし、通常のzipファイルとしてローカルの場所に解凍します。コンピューター。これにより、実際にはファイルの内容がunzipプログラムに直接ストリーミングされるため、技術的にはファイル全体を転送しますが、zipされた状態でのみ(おそらくトラフィックを節約します)、コンテンツは明示的な中間ステップなしでローカルコンピューターに直接表示されます。
zipファイルの一部を解凍することに関して、zipファイル形式がどのように指定されているかわかりません。それでもファイル全体またはそのファイルに対応する圧縮部分のみを転送する必要がある場合。この種の選択的転送を実行できない理由について、実際の技術的な理由はわかりません(FTPプロトコルでは、再開を可能にするために部分的なファイルのみを転送できます)。
tarコマンドを使用できます
tar -xfz test.zip
-xzf
代わりに-xfz
?
site
FTPコマンド)