Памятка по командам FTP

Dragokas

Angry & Scary Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
7,814
Реакции
6,593
Автор обзора: Денис "Reagent" Ходус. Дополнено © мной smile3.gif

Все мы знаем сочетание буковок FTP, которое расшифровывается как File Transfer Protocol.
Старая, но до сих используемая технология передачи файлов между двумя компьютерами с использованием TCP/IP сети.

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

Итак, команда для работы с FTP как в Windows, так и в Unix (включая Linux Debian, CentOS, ubuntu, rhel, FreeBSD и т.д.) одинаковая - так и называется - "ftp".

Просто подсоединиться к определенному серверу - синтаксис тоже отличаться не будет:
Код:
ftp 192.168.0.1
А вот хитрости типа автологина и автоматического принятия или отсылки файлов - у разных ОС немного свои и мы здесь их разбирать не будем. Зато разберем - что же через командрую строку все-же сделать можно в самой сессии - и сами команды, конечно.

Итак, начнем. В этой памятке приведены самые часто используемые команды, которые позволят Вам свободно общаться с любым сервером с любым набором опций.

Команды

Открываем консоль. Запускаем нашу утилиту, введя буквы ftp
Видим на экране приглашение:
Код:
ftp>

HELP
Выдает список поддерживаемых команд

? имя команды
Получение короткого описания указанной команды.

OPEN
Присоединиться к указанному серверу (пишем его имя либо IP-адрес).
Также можно указать порт через пробел. По-умолчанию используется стандартный - 21.
Код:
ftp> open ftp.microsoft.com
При этом сервер Вас спросит логин и пароль.

CLOSE или DISCONNECT
Закрыть соединение с текущим FTP сервером.
Код:
ftp> close

BYE или QUIT
Закрыть соединение и выйти из утилиты FTP.
Код:
ftp> bye

USER
Залогиниться на данном сервере под указанным пользователем (Вы должны быть уже подключены).
Код:
ftp> user myusername
где вместо "myusername" подставьте имя пользователя, под которым логинитесь. FTP-сервер Вас спросит пароль для этого пользователя перед тем, как пустить.

LS или DIR
Показать список файлов и директорий в текущей папке на сервере.
Код:
ftp> ls

MLS или MDIR
Выгрузить список файлов из нескольких директорий в файл на Ваш компьютер.
Код:
ftp> mls dir1 dir2 dir3 mylocalfile.txt

CD
Перейти в указанную папку на сервере.
Код:
ftp> cd ../another/folder
Частный случай этой команды: CDUP - перейти в родительскую директорию - то же самое, что и "CD ..":
Код:
ftp> cdup

LCD
Перейти в указанную папку на Вашем компьютере.
Код:
ftp> lcd d:\temp

PWD
Показать текущий путь (текущую папку) на FTP сервере.
Код:
ftp> pwd

GET или RECV
Загрузить с FTP сервера в текущую папку Вашего компьютера указанный файл.
Код:
ftp> get myftpfile.txt

MGET
Загрузить несколько файлов в текущую папку Вашего компьютера с сервера FTP.
Код:
ftp> mget file1.txt file2.txt
mget file1.txt? y
mget file2.txt? y

NEWER
Загрузить с сервера FTP на Ваш компьютер указанный файл только если Ваш файл старее (т.е. удаленный файл свежее).
Код:
ftp> newer myfile1 myfile1

Здесь первый аргумент - имя файла на сервере, а второй аргумент - имя файла на Вашем компьютере.

PUT или SEND
Загрузить на FTP сервер указанный файл с Вашего компьютера.
Код:
ftp> put mylocalfile.txt

MPUT
Загрузить на сервер несколько файлов с Вашего компьютера.
Код:
ftp> mput myfile1.txt myfile2.txt
mput myfile1.txt? y
mput myfile2.txt? y

DELETE
Удалить указанный файл на сервере.
Код:
ftp> delete remotefile.txt

MDELETE
Удалить несколько файлов на сервере.
Код:
ftp> mdelete file1 file2

MKDIR
Создать директорию на сервере.
Код:
ftp> mkdir mynewdir

RMDIR
Удалить директорию на сервере
Код:
ftp> rmdir mydir

PROMPT
Избавляет от необходимости подтверждать получение файлов по маске нажатием клавиши "Y".

HASH
Отображает индикацию загрузки файлов с помощью меток хеширования (#).
Одна такая метка, по-умолчанию = 2048 байт.
Нужно для того, чтобы видеть - не подвисло ли получение/отправка больших файлов.

BINARY
Установка режима передачи данных в двоичном формате (подходит для любых типов файлов).

SITE CHMOD
Изменение прав на файл.
Если сервер поддерживает команду SITE которая должна быть в списке выдаваемым командой HELP, и если сервер линуксовый:
Код:
SITE CHMOD 777 file1.txt

QUOTE PASV
Переход в пассивный режим передачи данных.

Пример сессии FTP

Вот пример короткой FTP сессии, в которой мы подключаемся к серверу, создаем папку "newfiles" и заливаем в эту папку файл "binfile.bin".
Код:
ftp
ftp> open 31.170.155.55 21
ftp> Anonymouse
ftp>
ftp> mkdir newfiles
ftp> cd newfiles
ftp> put "c:\binfile.bin"
ftp> bye

Для автоматизации рутинной работы можно создать текстовой файл со списком команд, например FTPCommand.txt а затем выполнить код:
Код:
ftp.exe -s:FTPCommand.txt

Исключения для файрвола

Для успешного подключения к серверу утилита FTP.exe не должна блокироваться Вашим брандмауером.
Для внесения в список исключений встроенного в ОС Windows можно выполнить код:
Код:
netsh firewall add allowedprogram "%windir%\system32\ftp.exe" ENABLE

Данный код подходит, как для Windows XP, так и Windows 7*.
* Начиная с Windows Vista, алиас firewall считается устаревшив, хотя все еще поддерживается.
Новый формат команды выглядит так:
CMD/BATCH:
:: для входящих соединений
netsh advfirewall firewall add rule name="FTP_in" dir=in action=allow program="%windir%\system32\ftp.exe" enable=yes
:: для исходящих соединений
netsh advfirewall firewall add rule name="FTP_out" dir=out action=allow program="%windir%\system32\ftp.exe" enable=yes
(+нужен запуск с повышенными правами)

Альтернативные утилиты

** Некоторые сервера (к примеру, ucoz, а сейчас это и бывший narod.ru (сервис yandex-a) принципиально не поддерживают утилиту FTP.
При попытке подключения, получим сообщения вида "I won't open a connection to ...".
К счастью, есть альтернатива под названием WinSCP, которая имеет графический интерфейс и одновременно консольные команды, аналогичные утилите FTP.
http://winscp.net/eng/docs/scripting
http://winscp.net/eng/docs/commandline

Сокращенная запись сценария
Комментарий от Гимаев Наиль:

Для интерактивного режима требуется наличие человека который будет вводить команды.
В автоматическом режиме требуется наличие файла с командами. Например файл скачивания CureIt:
Код:
open ftp.drweb.com
binary
get /pub/drweb/cureit/cureit.exe

Файл очень маленький поэтому его можно преобразовать в такую команду:
Код:
(echo binary& echo get /pub/drweb/cureit/setup.exe)| ftp -A ftp.drweb.com

Здесь запускается интерактивный режим, а команды echo имитируют ввод команд человеком.

Даже такой маленький вариант читать не очень удобно, а если команд будет чуть побольше, то очень не удобно.
Поэтому лучше записать так:
Код:
(
echo binary
echo get /pub/drweb/cureit/setup.exe
)^
|ftp -A ftp.drweb.com

Также см.:
Отправка файла на FTP через контекстное меню ++ копирование ссылки в буфер обмена
 
Последнее редактирование:
На всякий случай уточню, что в последнем примере знак крышки не обязателен и был добавлен лишь как пример того, что каждую команду можно записать на отдельной строке. Поэтому лучше вместо
CMD/BATCH:
)^
|ftp -A ftp.drweb.com
писать
CMD/BATCH:
)|ftp -A ftp.drweb.com
 
Как запретить просмотр содержимого папки для anonymouse ?
 
Как запретить просмотр содержимого папки для anonymouse ?
Сначала нужно определиться для какого сервера поставлена задача. Нужно знать хотя бы какая операционная система.
 
Логично. Вот что выдает curl

Код:
curl Dragokas.16mb.com/Dr.Web/ --head

HTTP/1.1 200 OK
Server: nginx
Date: Sun, 06 Jul 2014 15:48:56 GMT
Content-Type: text/html;charset=ISO-8859-1
Connection: keep-alive
Vary: Accept-Encoding
 
Назад
Сверху Снизу