Список FTP-команд для командной строки Windows

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

Существует три способа, с помощью которых можно получить доступ к FTP :

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

Операционные системы Windows , Macintosh X и Linux имеют встроенные клиенты командной строки, которые могут быть использованы для установления FTP-соединения . Чтобы инициировать соединение в Windows , введите в CMD команды FTP и нажмите Enter .

Команды FTP для командной строки Windows

Команда Описание
! Эта команда служит для перехода между операционной системой и FTP. Для возврата из операционной системы к командной строке FTP используется команда exit.
? Отображение справки для команды.
append Добавление текста в локальный файл.
ascii Переключение в ASCII режим передачи данных.
bell Включает/отключает режим подачи звукового сигнала.
binary Установка режима передачи двоичных файлов.
bye Выход из FTP.
cd Смена текущего каталога.
close Выход из FTP.
delete Удаление файла.
debug Включает/отключает отладочный режим.
dir Выводит список файлов.

dir -C = выводит файлы в расширенном формате.

dir -1 = выводит список файлов в алфавитном порядке.

dir -r = выводит список каталогов в обратном алфавитном порядке.

dir -R = выводит список всех файлов в текущем каталоге и подкаталогах.

dir -S = выводит список файлов в алфавитном порядке.

disconnect выход из FTP.
get Получение файл с удаленного компьютера.
glob Переключает настройки расширения файла. В выключенном состоянии аргументы имен файлов в командах put и get воспринимаются буквально и не расширяются.
hash Включает/отключает вывод на экран знака ‘#’. Когда опция включена, после каждых 1024 байт переданных данных отображается хеш-символ (#).
help Отображает информацию о команде, если команда вводится после help.
lcd Отображает локальный каталог, в котором была запущена команда. Если же после команды lcd указан путь - изменяет текущий локальный каталог.
literal Отправка произвольной строки символов в качестве команды удаленному серверу с ожиданием единственного ответного кода.
ls Эта ftp exe команда выводит файлы удаленного компьютера.
mdelete Удаление нескольких файлов.
mdir Вывод содержимого удаленных каталогов.
mget Получение нескольких файлов.
mkdir Создание каталога на удаленном компьютере.
mls Вывод содержимого нескольких каталогов удаленного компьютера.
mput Отправка нескольких файлов.
open Устанавливает соединение.
prompt Включает/отключает подсказку.
put Отправка одного файла.
pwd Вывод рабочего каталога.
quit Завершение сеанса ftp.
quote Отправка произвольной команды.
recv Получение файла.
remotehelp Получение справки о командах удаленной системы.
rename Переименовывает файл.
rmdir Удаляет каталог на удаленном компьютере.
send Отправка одного файла.
status Отображает текущее состояние включенных и отключенных параметров.
trace Включает трассировку пакетов.
Type Устанавливает тип передачи файлов.
user Отправка сведений о пользователе для входа на сервер.
verbose Включает/ отключает режим информирования.

FTP команды для Windows

FTP параметры для командной строки Windows

Параметры CMD используются для изменения работы команд FTP . Параметр командной строки обычно следует за основной командой FTP через пробел. Вот список часто используемых параметров командной строки FTP для Windows® :

Параметр командной строки Описание
-v Отключение вывода на экран ответов с удаленного сервера.
-n Отключение автоматического входа при начальном подключении.
-i Отключение интерактивных запросов при передаче нескольких
-d Включение отладочного режима, отображает все команды FTP, передаваемые между клиентом и сервером.
-g Отключение расширения файлов, которое разрешает использование подстановочных символов в именах локальных файлов и путей.
-s:filename Задание текстового файла, содержащего команды FTP, которые

будут выполняться автоматически при запуске FTP. Пробелы в этом параметре не допускаются. Используйте этот параметр вместо перенаправления (>).

-a Использование локального интерфейса для привязки соединения.
-w:windowsize Переопределение стандартного размера буфера передачи (65535).
computer Задание имени или IP адреса удаленного узла, к которому необходимо подключиться. Компьютер, если он указан, должен быть последним параметром в строке.


FTP параметры командной строки для Windows

Консольный FTP-клиент , встроенный в Windows и Mac OS X — это надежный инструмент для тестирования, поиска и устранения неисправностей. Изучение приведенных выше cmd ftp команд поможет вам обмениваться файлами между компьютерами без установки дополнительного программного обеспечения.

FTP не является надежным способом обмена конфиденциальной информацией. Из-за ограничений этого протокола организации, как правило, используют для передачи файлов протоколы FTPS и SFTP . Технология управляемой передачи файлов (MFT ) поддерживает эти протоколы безопасности.

В этой статье мы расскажем о таких вещах:

  1. как настроить FTP-сервер на компьютере, который подключён к роутеру;
  2. как предоставить к нему доступ из всемирной сети Интернет.

Настройка программы FTP сервера

Установка FileZilla Server

Скачайте и установите любой FTP-сервер, который вам нравится, или с которым вы привыкли работать. Мы для примера скачаем бесплатную программу Filezilla Server с официального сайта: https://filezilla-project.org/download.php?type=server

Запустите скачанный установочный файл:

Нажмите Отклоняю :

Нажмите Отклоняю ещё раз:

Нажмите Установить :

Нажмите I agree:

Next:

Install :

Настройка FTP-сервера FileZilla

Запустите интерфейс программы.

Войдите в настройки: меню Edit -> Settings :

Теперь нужно настроить пассивный режим FTP.

1) Выберите раздел Passive mode settings;

2) Установите галку Use custom port range;

3) Задайте удобный для вас диапазон портов для использования в пассивном режиме;

4) В поле Use the following IP пропишите ваш внешний IP;

5) Нажмите кнопку OK для сохранения настроек.

Теперь необходимо настроить учётные записи пользователей и указать домашние директории.

Войдите в меню Edit и выберите Users :

В разделе General нажмите Add :

Введите имя пользователя и нажмите OK :

1) Установите галку возле Password . Этим вы укажете, что для данной учётной записи будет требоваться пароль.

2) Задайте пароль для данной учётной записи;

3) Перейдите в раздел Shared folders:

В разделе Shared folders нажмите Add :

и выберите папку, которая будет открыта данному пользователю для доступа через протокол FTP. После выбора общей папки нажмите OK:

Задайте разрешения для данного пользователя в папке.

В области Файлы вы можете разрешить или запретить следующие операции с файлами :

  • Чтение;
  • Запись;
  • Удаление;
  • Изменение.

В области Папки вы можете разрешить или запретить следующие операции с папками :

  • Создание;
  • Удаление;
  • Просмотр списка;
  • Просмотр вложенных папок.

После того, как вы зададите разрешения для данного пользователя в текущей папке, нажмите OK для сохранения настроек:

Настройка компьютера

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

Заходим в Панель управления и выбираем Брандмауэр Windows.

Нажимаем правой кнопкой мыши по Правила для входящих подключений и выбираем Создать правило :

Выбираем вариант Для программы и нажимаем Далее :

Установите переключатель в положение Путь программы и с помощью кнопки Обзор укажите путь к файлу FileZilla Server.exe.
Затем, нажмите Далее:

Выберите вариант Разрешить подключение и нажмите Далее:

Дайте произвольное имя правилу и нажмите Готово :

Настройка роутера: создание правил проброса портов

Теперь нам необходимо создать проброс портов на шлюзе. Шлюзом может быть роутер, модем или другое устройство. Войдите на веб-интерфейс роутера (читайте статью о том, что такое веб-интерфейс и как на него зайти: ) и откройте раздел перенаправления портов. Подробнее о перенаправлении портов читайте в нашей статье: Что такое проброс порта.

Создайте два правила.

Правило №1: проброс внешнего порта 21 на порт 21 компьютера, где установлена программа FTP-сервер.

Правило №2: проброс диапазона портов на такой же диапазон портов на компьютере с установленной программой FTP-сервер.

Сохрание настройки.

Как удалённо подключиться к FTP-серверу

Для доступа к FTP-серверу вы можете использовать либо FTP-клиент, либо браузер, либо даже проводник. Конечно же, предпочтительнее использовать FTP-клиент. Мы рекомендуем бесплатную программу FileZilla client . Скачать его вы сможете на официальном сайте: https://filezilla-project.org/download.php?type=client

В поле Хост введите либо ), либо внешний IP-адрес роутера. Затем, введите имя пользователя, созданное вами в программе FileZilla Server на компьютере, соответствующий ему пароль и нажмите кнопку Быстрое соединение :

Если в пробросе портов в настройках роутера вы не изменяли порт №21 на нестандартный, то поле Порт можно оставить пустым — программа по умолчанию подключится на 21-ый порт.

Передача информации в интернете осуществляется несколькими способами. По правилам протокола НТТР данные представляются средствами языка гипертекстовой разметки. Любой браузер получает контент сайта от сервера в виде гипертекстового описания и преобразует его в образ страниц.

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

Используя всемирную паутину (www), мы ежедневно скачиваем и отправляем данные на серверы по http-протоколу. Также можно загружать на свой ПК файлы хранящиеся на многочисленных ftp-серверах. Тысячи FTP-серверов предоставляют анонимный бесплатный доступ к гигабайтам самых разнообразных данных: дистрибутивам ПО, изображениям, текстовым, аудио- и видеофайлам.

Кроме этого, на многих серверах существуют каталоги открытые на запись для размещения в них файлов пользователей. Так обеспечивается пополнение библиотек свежей информацией. Эти разделы могут использоваться с целью резервного копирования или дальнейшего распространения файлов по сети. Таким образом, FTP-архивы - это рассредоточенный депозитарий информации хранящейся в виде файлов на различных серверах по всему миру. Популярные сегодня облачные хранилища данных - лишь современная альтернатива FTP-файлообменникам.

Хотя, FTP - один из старейших сетевых протоколов, для многих пользователей ftp-ресурсы интернета остаются неизведанной областью.

Для работы с ftp-хостами существует множество десктопных приложений. Один из популярных ftp-клиентов - бесплатная программа FileZilla.

Скачаем FileZilla Client с официального сайта http://filezilla.ru/get/

Чтобы с помощью такого клиентского приложения подключиться к ftp-серверу нужно иметь его адрес. И определенно знать, что искомый файл записан в одной из его директорий. И нужно знать имя файла или, хотя бы, часть его названия. Фактически, это уже не поиск файла, а точное и целенаправленное его извлечение.

Узнать имя файла можно на страницах с его описанием, предварительно погуглив, например, интересующую тему. Далее, имея название файла, можно обратиться уже к ftp-поисковикам. Создано немало таких специальных поисковиков. Найти их в сети можно по запросу: "ftp-поисковик". Существуют и каталоги открытых ftp-серверов, как например: https://goo.gl/U7e4us

Попробуем найти и скачать с ftp-сервера небольшую полезную программку для записи образа диска ImgBurn.

Для поиска в ftp-архивах используем сервис krasfs.ru . В поисковую строку вписываем название файла и ищем только в FTP:

По запросу открывается десяток файлов с дистрибутивом приложения. Правой кнопкой мышки из контекстного меню командой: "Сохранить ссылку как..." открываем проводник ПК и сохраняем файл в выбранную директорию:


Кажется, такой поиск файлов совсем не впечатляет. Ведь скачать последнюю версию подобной бесплатной программы проще с официального сайта разработчика.

К ftp-ресурсам стоит обратиться когда привычным способом на страницах сайтов нужный файл не находится. Или предстоит копирование из сети объемного файла - более 100 Мб. Потому что, при всех прочих равных условиях файл из ftp-архива скачается быстрее.

И теперь посмотрим как работает менеджер FileZilla. Скачали, установили и открыли программу. Копируем адрес ссылки из поисковика krasfs.ru:

и вставляем ее в поле программы: "Хост:". Остальные поля не заполняем, так как доступ к серверу анонимный, и нажимаем кнопку "Быстрое соединение". Через некоторое время приложение подключается к хостингу. В правой части окна программы разворачиваем структуру директорий ftp-сервера, проходим в конечную папку согласно ссылке из поисковика: ftp://82.209.233.14/media/soft/Beloff/BWPI/Portable/ ImgBurn.exe и в правой нижней четверти окна находим искомый файл:


Правой кнопкой мышки выделяем файл, в его контекстном меню кликаем команду "Скачать" и наблюдаем процесс копирования:


Очень удобно работать в FileZilla - дружественный интерфейс, все директории как на ладони. При этом, в случае разрыва соединения с сервером, файл в ftp-клиенте можно докачать. Если скачивать просто браузером, как было показано выше, после прерванного подключения придется начинать копирование заново.

Обратим внимание на сервис krasfs.ru. Кроме файлов из архивов FTP этот поисковик находит раздачи на площадках двух десятков популярных торрент-трекеров. Для поиска используем названия фильмов или книг, имена авторов произведений, исполнителей. Когда файл найден, копируем адрес ссылки и добавляем его в торрент-клиент:


Итак, вооружившись универсальным сервисом krasfs.ru, ftp-каталогами начинаем изучать доступные ftp-кладовые. Исследуя ftp-ресурсы в поисках нужного попутно в папках можно обнаружить другие интересные и эксклюзивные материалы - уникальные файлы из самых разных областей. Это напоминает рыбалку - вылавливая одно можно поймать неожиданную удачу. То есть, появляется интрига найти что-то редкое, малоизвестное.

Если вы достаточно давно читаете этот блог, то можете помнить о том, как я решил собрать в нем описание популярных (и не очень) сетевых протоколов. Зачем это мне нужно, можно прочитать в статье Достаточно полное описание протокола SMTP . Вот решил пополнить коллекцию протоколом FTP, повсеместно используемым для передачи файлов.

1. Заходим

По традиции, сразу начну с примера:

$ telnet example.ru 21
Trying 192.168.0.1...
Connected to example.ru.
Escape character is "^]".
220-Welcome to Pure-FTPd
You are user number 5 of 100 allowed.
Local time is now 17:41. Server port: 21.
220 You will be disconnected after 15 minutes of inactivity.
USER afiskon
331 User afiskon OK. Password required
PASS lamepassword
230-User afiskon has group access to: coders
230 OK. Current restricted directory is /

FTP-сервер обычно работает на 21 порту. В приведенном примере строки, начинающиеся с цифр, посылаются сервером, остальные — клиентом. Запросы клиента всегда состоят из одной строки формата КОМАНДА [аргументы] , в то время как ответы сервера могут содержать несколько строк.

Первая и последняя строки начинается с трех цифр, представляющих собой код ответа, за которыми идет текстовое описание ответа, отделенное от кода либо пробелом, либо тире. Если в качестве разделителя используется пробел, значит строка является последней в ответе (и, возможно, единственной), иначе — мы получили первую строку многострочного ответа. Где-то мы это уже видели , не так ли?

Существует пять групп ответов сервера:

Как видно из примера, все начинается с посылки сервером кода 220. Затем пользователь должен залогиниться с помощью команд USER и PASS. Если все сделано правильно, на первую сервер ответит кодом 331, а на вторую — 230. Для анонимного входа (если он разрешен настройками сервера), в качестве имени пользователя следует указать «anonymous», а в качестве пароля — свой e-mail. На практике обычно посылается либо пустой e-mail, либо что-то типа [email protected].

Как видно, пароль передается в открытом виде, потому крайне желательно шифровать FTP-соединение с помощью SSL (это называется FTPS — FTP плюс SSL), а еще лучше — передавать файлы по SSH с помощью утилит scp, sftp или WinSCP . Первые две есть в любой unix-системе и используют для передачи файлов одноименные протоколы, работающие поверх SSH. WinSCP написан для Windows и внешне напоминает Total Commander, умеет работать как с устаревшим SCP (Secure Copy), так и SFTP (SSH File Transfer Protocol), появившимся только в SSH-2.

2. Осматриваемся

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

Команда Ожидаемый код Описание
DELE 250 Удалить файл
RMD 250 Удалить директорию
CWD 250 Перейти в директорию
MKD 257 Создать директорию
PWD 257 Узнать текущую директорию
QUIT 221 Закончить работу
TYPE 200 Установить тип передачи
PORT 200 Перейти в активный режим
PASV 227 Перейти в пассивный режим
LIST 150, 226 Получить содержимое каталога
RETR 150, 226 Скачать файл
STOR 150, 226 Залить файл
ABOR 426,226 Отменить передачу
RNFR 350 Выбрать файл для переименования
RNTO 250 Переименовать файл

Здесь я перечислил лишь основные команды, которых достаточно для написания полноценного FTP-клиента. Дело в том, что в реальных условиях FTP-серверы очень избирательно относятся к поддержке команд, описанных в RFC959 и RFC3659 . Так что, если мы хотим получить действительно работающее приложение, а не сферического коня в вакууме, придется ограничиться лишь командами из приведенного списка.

Самые простые команды — это QUIT, DELE, MKD, CWD и RMD . Просто командуем и проверяем код, возвращаемый сервером. Если он равен ожидаемому, значит все ОК, если нет — обрабатываем ошибку.

MKD ftp_test
257 "ftp_test" : The directory was successfully created
CWD ftp_test
250 OK. Current directory is /ftp_test
CWD ..
250 OK. Current directory is /
RMD ftp_test
250 The directory was successfully removed

Если бы я писал FTP-клиент, то код, отвечающий за выполнение названных команд, выглядел бы примерно так:

int code;
char * dir;
// ...
if (code = rawcmd(250 , "RMD %s\r \n " , dir) )
printf ("Error: %d\n " , code) ;
else
printf ("All done!\n " ) ;

Чуть сложнее с парсингом ответа сервера на команду PWD :

PWD
257 "/ftp_test" is your current location

Текущая директория передается в единственной (последней?) строке ответа сервера, заключенная в двойные кавычки. Если полное имя текущей директории содержит двойные кавычки, они заменяются на две кавычки:

PWD
257 "/ftp""test" is your current location

Для переименования файлов используется пара команд — RNFR и RNTO :

RNFR old_file.zip
350 Are you kidding?
RNTO new_file.zip
250 Done!

По всей видимости, это такая оптимизация, чтобы буфер, в который сервер читает команды клиента, был порядка максимально допустимой длины полного имени файла, а не в два раза больше. В 1971-м году, когда был создан протокол, это могло быть важно.

Команда TYPE позволяет установить режим передачи файлов. Пример:

TYPE E
200 TYPE is now EBCDIC
TYPE A
200 TYPE is now ASCII
TYPE I
200 TYPE is now 8-bit binary

Насколько я могу судить, сегодня эта команда уже устарела и все данные можно спокойно передавать в бинарном формате (TYPE I). Цитата из Википедии :

Первые компьютеры использовали формат, размером в байт, машинное слово, двойное машинное слово, не кратное 8. Обычно они были кратны шести. Восемь бит в байте было принято при разработке системы машинных команд для IBM System/360. Это стало международным стандартом и с начала 1970-х большинство компьютеров использует байты, состоящие из 8 бит, и машинные слова, кратные 8.

3. Действуем

Особенность протокола FTP — для выполнения команд и передачи файлов используются разные соединения. Это в общем-то нормальное проектное решение. Мы же не знаем, что там в этих файлах записано, а если передавать их вместе с командами, придется как-то кодировать содержимое файла, чтобы отличить его от команд. Зачем увеличивать объем трафика и усложнять протокол, когда можно просто открыть новое соединение и послать файл, как есть?

При установлении нового соединения кто-то должен собственно соединяться, а кто-то соединение принимать. Если клиент открывает порт, а сервер коннектится к нему, режим передачи файла называется активным. В обратном случае — пассивным. За счет того, что многие пользователи Интернета сегодня сидят за NAT, обычно используется пассивный режим. И это не очень хорошо, потому что число портов у сервера ограничено.

Что интересно — существует возможность передавать файлы с одного FTP-сервера на другой напрямую. Но поскольку такая возможность часто использовалась в DDoS-атаках, сейчас она практически везде отключена.

Для перехода в пассивный режим используется команда PASV , для перехода в активный — PORT :

PORT 192,168,10,1,21,133
200 PORT command successful
PASV
227 Entering Passive Mode (192,168,0,1,21,216)

Как несложно догадаться, с помощью цифр кодируется IP-адрес и порт для соединения. Допустим, мы находимся в пассивном режиме и хотим установить соединение для передачи данных:

$ telnet 192.168.0.1 `expr 21 \* 256 + 216`
Trying 192.168.0.1...
Connected to example.ru.
Escape character is "^]".

После чего можем, например, просмотреть содержимое текущего каталога, заюзав команду LIST :

LIST
150 Accepted data connection
226-Options: -a -l
226 5 matches total

Смотрим на вывод telnet:

drwx------ 5 afiskon coders 512 Jul 7 11:35 .
drwx------ 5 afiskon coders 512 Jul 7 11:35 ..
drwxr--r-- 3 afiskon coders 512 Jun 6 14:30 сайт
drwxr-xr-x 2 afiskon coders 1024 Jul 7 00:16 logs
drwxr--r-- 2 afiskon coders 512 Jun 6 14:30 tmp
Connection closed by foreign host.

Абсолютно аналогично происходит скачивание и аплоад файлов, только используются команды RETR {файл} и STOR {файл} соответственно. Команды RETR, STOR и LIST можно прервать в процессе выполнения с помощью команды ABOR , в ответ на которую сервер должен ответить 426 «передача прервана», а затем — 226 «отмена операции произошла успешно».

4. Заключение

На этом я, пожалуй, закончу свое повествование. Получилось 9 Кб текста против 130 Кб RFC959 . По этой статье вполне можно написать несложный FTP клиент или сервер, я проверял! Самое главное — это протестировать его на совместимость с максимально возможным количеством ПО, поскольку, как я уже отмечал, в мире FTP мало кто строго следует RFC. Ну и последнее — помните золотое правило «Be liberal with input, strict with output».