19

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

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

8 ответов8

14

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

14

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

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

3

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

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

затем

unzip /path/to/mount/test.zip
2

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

2

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

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

1

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

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

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

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

0

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

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

-1

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

tar -xfz test.zip

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .