Я подключился к своему удаленному серверу через FTP и получил список каталогов. У меня в списке несколько zip-файлов.
Можно ли распаковать файл (например, test.zip)? Если да, то какая команда?
решение1
Невозможно распаковать файлы через FTP-соединение. FTP означает "File Transfer Protocol", который был разработан только для передачи и частичного управления файлами на удаленном конце, но не для выполнения команд. Чтобы распаковать архив, вам придется запустить программу типа tar, bzip2 или подобную, но это невозможно через FTP-соединение.
Вам нужна другая сессия, которая позволяет вам выполнять команды, например SSH. Или вы распаковываете архив на своей машине и передаете содержимое через FTP, что будет значительно медленнее, если у вас большое количество мелких файлов из-за накладных расходов FTP.
решение2
Немного вырванный из контекста ответ, но наверняка работает. Если вы используете 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-архив для вас.
решение3
Это можно сделать, если смонтировать FTP-ресурс с помощью curlftpfs
:
curlftpfs ftp://ftp.server.org/ /path/to/mountpoint
затем
unzip /path/to/mount/test.zip
решение4
Ваша цель — распаковать его?на внешнем сервере, или вы хотите извлечь содержимое архивана свой компьютер?
Первый случай решается не с помощью FTP, а с помощью SSH или аналогичных методов, описанных в других ответах.
Если вы просто хотите получить разархивированное содержимое «напрямую» на свой компьютер без предварительного явного переноса файлов и последующей разархивации, вы можете, например, смонтировать FTP-сайт как папку и разархивировать его как обычный zip-файл в место на вашем локальном компьютере. Это позволитна практикеПередавайте содержимое файла непосредственно в программу распаковки, так что технически выделатьперенесите весь файл, но только в заархивированном виде (предположительно, для экономии трафика), и его содержимое появится непосредственно на вашем локальном компьютере без явного промежуточного шага.
Я не знаю, как формат zip-файла определяется относительно простого разархивирования части zip-файла; если вам нужно перенестивесьфайл тем не менее или только сжатую часть, соответствующую этому файлу. Я не вижу никаких реальных технических причин, по которым было бы невозможно сделать такой выборочный перенос (протокол FTP позволяет передавать только частичные файлы для возможности возобновления).