FTP経由でリモートサーバーに接続し、ディレクトリリストを取得しました。リストにいくつかのZipファイルがあります。
ファイルを解凍できますか(例:test.Zip)?はいの場合、コマンドは何ですか?
FTP接続を介してファイルを解凍することはできません。 FTPは「ファイル転送プロトコル」の略で、リモートエンドでファイルを転送して部分的に管理するだけで、コマンドを実行するようには設計されていません。アーカイブを解凍するには、tar、bzip2などのプログラムを実行する必要がありますが、FTP接続を介して行うことはできません。
SSHなどのコマンドを実行できる別のセッションが必要です。または、アーカイブをマシンに解凍し、FTP経由でコンテンツを転送します。FTPのオーバーヘッドのために多数の小さなファイルがある場合は、かなり遅くなります。
状況に応じた回答は少しありますが、確実に機能します。その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を抽出します。
curlftpfs
を使用してFTPリソースをマウントすると、これを行うことができます。
curlftpfs ftp://ftp.server.org/ /path/to/mountpoint
その後
unzip /path/to/mount/test.Zip
あなたの目標はそれを解凍することです外部サーバー上、またはアーカイブの内容をプルしますか自分のコンピュータに?
最初のケースはFTPでは解決されませんが、他の回答で説明されているように、SSHまたは同様の手法で解決されます。
最初に明示的にファイルを転送してから解凍せずに、解凍したコンテンツを自分のコンピューターに「直接」取得したいだけの場合は、次のようにすることができます。 FTPサイトをフォルダーとしてマウントし、通常のZipファイルとしてローカルコンピューター上の場所に解凍します。これは実際にはファイルの内容をunzipプログラムに直接ストリーミングするため、技術的にはdoファイル全体を転送しますが、圧縮された状態(おそらくトラフィックを節約している)でのみ、コンテンツは明示的な中間ステップなしでローカルコンピューターに直接表示されます。
Zipファイルの一部を単に解凍することに関して、Zipファイル形式がどのように指定されているのかわかりません。それでもwholeファイルを転送する必要がある場合、またはそのファイルに対応する圧縮部分のみを転送する場合。この種の選択的な転送を行うことができない理由について、実際の技術的な理由はわかりません(FTPプロトコルでは、再開を可能にするために部分的なファイルのみを転送できます)。
Sudo apt-get install unzipを実行した後、unzipを使用できます。
http://linux.about.com/od/commands/a/blcmdl1_unzipx.htm
シンプルなケース-test.Zipを解凍します
私の知る限り、一部のFTPサーバーはダウンロード時にファイルを自動的に解凍するように設定されています。たとえば、サーバーはtest.txt.gz
という名前のファイルを一覧表示し、ftpクライアントでget test.txt
と入力すると、サーバーはファイルをunzipで送信します。
これは、ダウンロードが始まる直前に読むことができる答えです:150 Opening ASCII mode data connection for /usr/bin/gzip.