web-dev-qa-db-ja.com

FTP接続を介してファイルを解凍する方法は?

FTP経由でリモートサーバーに接続し、ディレクトリリストを取得しました。リストにいくつかのZipファイルがあります。

ファイルを解凍できますか(例:test.Zip)?はいの場合、コマンドは何ですか?

20
Hearaman

FTP接続を介してファイルを解凍することはできません。 FTPは「ファイル転送プロトコル」の略で、リモートエンドでファイルを転送して部分的に管理するだけで、コマンドを実行するようには設計されていません。アーカイブを解凍するには、tar、bzip2などのプログラムを実行する必要がありますが、FTP接続を介して行うことはできません。

SSHなどのコマンドを実行できる別のセッションが必要です。または、アーカイブをマシンに解凍し、FTP経由でコンテンツを転送します。FTPのオーバーヘッドのために多数の小さなファイルがある場合は、かなり遅くなります。

17
Bobby

状況に応じた回答は少しありますが、確実に機能します。その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を抽出します。

17
Touqeer Shafi

curlftpfsを使用してFTPリソースをマウントすると、これを行うことができます。

curlftpfs ftp://ftp.server.org/ /path/to/mountpoint

その後

unzip /path/to/mount/test.Zip
3
jet

あなたの目標はそれを解凍することです外部サーバー上、またはアーカイブの内容をプルしますか自分のコンピュータに

最初のケースはFTPでは解決されませんが、他の回答で説明されているように、SSHまたは同様の手法で解決されます。

最初に明示的にファイルを転送してから解凍せずに、解凍したコンテンツを自分のコンピューターに「直接」取得したいだけの場合は、次のようにすることができます。 FTPサイトをフォルダーとしてマウントし、通常のZipファイルとしてローカルコンピューター上の場所に解凍します。これは実際にはファイルの内容をunzipプログラムに直接ストリーミングするため、技術的にはdoファイル全体を転送しますが、圧縮された状態(おそらくトラフィックを節約している)でのみ、コンテンツは明示的な中間ステップなしでローカルコンピューターに直接表示されます。

Zipファイルの一部を単に解凍することに関して、Zipファイル形式がどのように指定されているのかわかりません。それでもwholeファイルを転送する必要がある場合、またはそのファイルに対応する圧縮部分のみを転送する場合。この種の選択的な転送を行うことができない理由について、実際の技術的な理由はわかりません(FTPプロトコルでは、再開を可能にするために部分的なファイルのみを転送できます)。

2

Sudo apt-get install unzipを実行した後、unzipを使用できます。

2
fraabye

http://linux.about.com/od/commands/a/blcmdl1_unzipx.htm

シンプルなケース-test.Zipを解凍します

2
Sanath

私の知る限り、一部のFTPサーバーはダウンロード時にファイルを自動的に解凍するように設定されています。たとえば、サーバーはtest.txt.gzという名前のファイルを一覧表示し、ftpクライアントでget test.txtと入力すると、サーバーはファイルをunzipで送信します。

これは、ダウンロードが始まる直前に読むことができる答えです:150 Opening ASCII mode data connection for /usr/bin/gzip.

0
Kay