Как распаковать файлы через 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.