Открытые ftp. Список FTP-команд для командной строки Windows

Если вы достаточно давно читаете этот блог, то можете помнить о том, как я решил собрать в нем описание популярных (и не очень) сетевых протоколов. Зачем это мне нужно, можно прочитать в статье Достаточно полное описание протокола 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».

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

Протокол 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-ресурсы в поисках нужного попутно в папках можно обнаружить другие интересные и эксклюзивные материалы - уникальные файлы из самых разных областей. Это напоминает рыбалку - вылавливая одно можно поймать неожиданную удачу. То есть, появляется интрига найти что-то редкое, малоизвестное.

Здравствуйте админ, объясните мне пожалуйста, что такое FTP сервер и могу ли я сам создать его на своём компьютере?

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

Привет друзья! Наш Ro8 написал для Вас классную статью на эту тему, читаем.

Во-первых, FTP - это протокол передачи файлов по сети интернет по принципу «клиент-сервер» , а FTP сервер, это хранилище файлов в интернете, то есть - обычный компьютер с установленной Windows 7, 8.1 или Windows Server 2012 и несколькими жёсткими дисками большого объёма, на которых могут быть расположены любые ваши файлы. На этом компьютере установлена программа, например - FileZilla Server , подключиться к этому компьютеру может любой другой с помощью: командной строки , проводника Windows и различных программ, рассмотрим в нашей статье две: FileZilla Client , и Total Commander . После подключения к FTP-серверу вы можете закачивать на него любые файлы (фильмы, музыку и т.д) и также скачивать.

Управление FTP-сервером будет осуществлять администратор, установивший программу - FileZilla Server. Именно в ней можно каждому пользователю присвоить различные права доступа (возможность изменения файлов на сервере) : Append (возможность изменения файлов), Read (только чтение), Write (запись), Delete (удаление). Естественно, большей части пользователей можно не давать права Delete (удаление).

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

Как происходит работа

В качестве программной реализации FTP сервера в статье будет рассмотрена программа FileZilla Server, которая будет установлена на машину с Windows Server 2012

Также в качестве машины с которой будет производится подключение к созданному FTP серверу выступает компьютер с предустановленной Windows 8.1 Enterprise (x64)

Для того, чтобы машина с Windows 8.1 могла подключиться к FTP серверу, на нее будет произведена установка программы FileZilla Client (один из способов подключения с помощью данной программы)

Переходим по адресу https://filezilla-project.org и скачиваем FileZilla Server и FileZilla Client

Скачанный файл FileZilla Server запускаем на машине с Windows Server 2012 , а файл FileZilla Client на машине с Windows 8.1 . Обе программы устанавливаются одинаково. В первую очередь установим программу FileZilla Server.

Установка FileZilla Server

После запуска скачанного файла FileZilla Server на Windows Server 2012 нажимаем далее

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

Установить

Процесс установки FileZilla Server

Установка завершена

После установки откроется вот такое окно, в котором вводим локальный адрес FTP сервера и нажимаем OK

После ввода локального адреса FTP сервера появится основное окно программы FileZilla Server

Произведем некоторые настройки выбрав Edit-Users

На вкладке General для добавления нового пользователя нажимаем на кнопку Add

Вводим имя пользователя. ОК

Напротив Password ставим галочку и вводим пароль добавленного пользователя

Переходим на вкладку Shared Folders. На данной вкладке добавим папку FTP01 которая будет доступна созданному пользователю Ro8. Нажимаем Add

Указываем заранее созданную папку FTP01. ОК

Выделяем добавленную папку и указываем для нее права доступа: - Read (только чтение), Write (запись), Delete (удаление), Append (возможность изменения файлов в данной папке)

Определяем ip адрес машины с Windows Server 2012 (192.168.1.4)

Установка FileZilla Client

Переходим на машину с Windows 8.1 и производим установку программы FileZilla Client

Принимаем лицензионное соглашение

Установка

Установка завершена

У нас есть сеть, представленная на схеме

Выполним подключение к FTP серверу различными способами.

Подключимся к FTP серверу используя командную строку

На машине с Windows 8.1 запустим командную строку.

Указываем имя пользователя (Ro8 ) и вводим пароль. Пароль при вводе не отображается

Logged on означает что мы произвели вход на FTP сервер

Создадим папку My_Backup_win8.1 на FTP сервере - введя команду mkdir My_Backup_win8.1

Посмотрим список папок на FTP сервере - введя команду ls

Как видим, на FTP сервере присутствует папка My_Backup_win8.1

Закрываем соединение с FTP сервером введя команду bye

Подключение к FTP-серверу с помощью программы T otal Commander

Запустим на машине с Windows 8.1 файловый менеджер Total Commander. Для настройки подключения к FTP серверу нажимаем на кнопку указанную на скриншоте

Нажимаем Добавить

Указываем имя соединения (произвольно), сервер и порт (сервер это ip адрес FTP сервера, порт прописываем 21). Также указываем имя пользователя и пароль. ОК

Выделяем созданное FTP соединение и нажимаем Соединится

Соединение с FTP сервером установлено

Для отключения от FTP сервера нажимаем Отключение

Отключение от FTP сервера выполнено

Подключение к FTP-серверу с помощью программы FileZilla Client

Запустим программу FileZilla Client

Откроется главное окно программы

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

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

  • 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 ) поддерживает эти протоколы безопасности.