Как распаковать файлы через FTP-соединение?

Я подключился к удаленному серверу через FTP и получил список каталогов. У меня есть несколько zip-файлов в списке.

Можно ли распаковать файл (например, test.zip)? Если да, то какая команда?

8 ответов

Решение

Распаковать файлы через FTP-соединение невозможно. FTP означает "Протокол передачи файлов", который был разработан только для передачи и частичного управления файлами на удаленном конце, но не для выполнения команд. Чтобы распаковать архив, вам нужно выполнить программу наподобие tar, bzip2 или аналогичную, но это невозможно через FTP-соединение.

Вам нужен еще один сеанс, который позволяет вам выполнять команды, такие как SSH. Или вы распаковываете архив на своей машине и переносите содержимое по FTP, что будет значительно медленнее, если у вас есть большое количество небольших файлов из-за нагрузки на FTP.

Немного вне контекста ответа, но, безусловно, работает. Если вы используете Apache + php в этом каталоге ftp, загрузите 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 Бинго PHP извлечет этот почтовый индекс для вас.

Вы можете сделать это, если вы монтируете ресурс ftp используя curlftpfs:

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

затем

unzip /path/to/mount/test.zip

Ваша цель - разархивировать его на внешний сервер или вы хотите перенести содержимое архива на свой компьютер?

Первый случай не решается с помощью FTP, но с помощью SSH или аналогичных методов, как описано в других ответах.

Если вы просто хотите получить разархивированное содержимое "напрямую" на свой собственный компьютер без предварительной явной передачи файлов, а затем разархивировать, вы можете, например, смонтировать FTP-сайт как папку и разархивировать его как обычный zip-файл в папку на вашем локальном компьютере. компьютер. На практике это приведет к потоковой передаче содержимого файла непосредственно в разархивированную программу, так что технически вы действительно передаете весь файл, но только в сжатом состоянии (предположительно экономя трафик), и содержимое будет отображаться непосредственно на вашем локальном компьютере без явного промежуточного шага.

Я не знаю, как указан формат zip-файла, касающийся разархивирования части zip-файла; если вам необходимо передать весь файл или только сжатую часть, соответствующую этому файлу. Я не вижу каких-либо реальных технических причин относительно того, почему нельзя было бы делать такой выборочный перенос (протокол FTP позволяет передавать только частичные файлы для возобновления).

Вы можете использовать unzip после запуска sudo apt-get install unzip.

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

простой случай - распакуйте тест.zip

Насколько я знаю, некоторые FTP-серверы настроены на автоматическое распаковывание файлов при загрузке. Например, сервер перечисляет файл с именем test.txt.gz, с вашим FTP-клиентом вы можете набрать get test.txtЗатем сервер отправляет файл через разархивировать.

Это ответ, который можно прочитать прямо перед началом загрузки: 150 Opening ASCII mode data connection for /usr/bin/gzip.

Вы можете использовать команду tar

tar -xfz test.zip
Другие вопросы по тегам