Все мы знаем сочетание буковок FTP, которое расшифровывается как File Transfer Protocol. Старая, но до сих используемая технология передачи файлов между двумя компьютерами с использованием TCP/IP сети.
Большинство из нас пользуется для работы с этим протоколом какими-либо утилитами или модулями файловых менеджеров. Но давайте представим себе ситуацию, когда нужно получить доступ к FTP-серверу через командную строку. Никаких панелей со списком файлов и кнопочками "Копировать" и "Удалить" там у Вас не будет. (Кстати, я часто именно через командную строку лажу - мне так просто даже быстрее - если приходится что-то сделать или проверить FTP.)
Итак, команда для работы с FTP как в Windows, так и в Unix (включая Linux Debian, CentOS, ubuntu, rhel, FreeBSD и т.д.) одинаковая - так и называется - "ftp".
Просто подсоединиться к определенному серверу - синтаксис тоже отличаться не будет:
А вот хитрости типа автологина и автоматического принятия или отсылки файлов - у разных ОС немного свои и мы здесь их разбирать не будем. Зато разберем - что же через командрую строку все-же сделать можно в самой сессии - и сами команды, конечно.
Итак, начнем. В этой памятке приведены самые часто используемые команды, которые позволят Вам свободно общаться с любым сервером с любым набором опций.
Команды
Присоединиться к указанному серверу.
ftp> open 192.168.0.1
При этом сервер Вас спросит логин и пароль.
CLOSE или DISCONNECT
Закрыть соединение с текущим FTP сервером.
Закрыть соединение и выйти из утилиты FTP.
Залогиниться на данном сервере под указанным пользователем (Вы должны быть уже подключены).
ftp> user myusername
где вместо "myusername" подставьте имя пользователя, под которым логинитесь. FTP-сервер Вас спросит пароль для этого пользователя перед тем, как пустить.
LS или DIR
Показать список файлов и директорий в текущей папке на сервере.
Выгрузить список файлов из нескольких директорий в файл на Ваш компьютер.
ftp> mls dir1 dir2 dir3 mylocalfile.txt
Перейти в указанную папку на сервере.
ftp> cd ../another/folder
Частный случай этой команды: CDUP - перейти в родительскую директорию - то же самое, что и "CD ..":
Перейти у указанную папку на Вашем компьютере.
ftp> cd /home/myusername/ftp
Показать текущий путь (текущую папку) на FTP сервере.
Загрузить с FTP сервера в текущую папку Вашего компьютера указанный файл.
ftp> get myftpfile.txt
Загрузить несколько файлов в текущую папку Вашего компьютера с сервера FTP.
ftp> mget file1.txt file2.txt
mget file1.txt? y
mget file2.txt? y
Загрузить с сервера FTP на Ваш компьютер указанный файл только если Ваш файл старее (т.е. удаленный файл свежее).
ftp> newer myfile1 myfile1
Здесь первый аргумент - имя файла на сервере, а второй аргумент - имя файла на Вашем компьютере.
PUT или SEND
Загрузить на FTP сервер указанный файл с Вашего компьютера.
ftp> put mylocalfile.txt
Загрузить на сервер несколько файлов с Вашего компьютера.
ftp> mput myfile1.txt myfile2.txt
mput myfile1.txt? y
mput myfile2.txt? y
Удалить указанный файл на сервере.
ftp> delete remotefile.txt
Удалить несколько файлов на сервере.
ftp> mdelete file1 file2
Создать директорию на сервере.
ftp> mkdir mynewdir
Удалить директорию на сервере
ftp> rmdir mydir
Вот основные команды. Их, конечно, больше, но именно этот набор позволит Вам успешно работать с любым FTP сервером через командную строку.
Больше Вы, как всегда, можете узнать из справки. Для этого наберите "HELP" в командной строке FTP и получите список поддерживаемых директив.
Пример сессии FTP
Вот пример короткой FTP сессии, в которой мы подключаемся к серверу, создаем папку "newfiles" и заливаем в эту папку файл "binfile.bin".
А сегодня мы рассмотрим работу с FTP сервером через командную строку cmd. Как я и говорил данный метод используется довольно редко, по крайней мере мной, так как проще работать через FTP клиент. Однако, для написания автоматизированных скриптов для обмена данными между вашей локальной машиной и FTP сервером эти знания вам очень даже пригодятся.
В данном видео писать скрипт мы не будем, этим мы займемся в следующем видео, а просто рассмотрим основные команды для работы с FTP сервером через командную строку.
Основные команды для работы с FTP сервером через командную строку CMD
И для начала нам необходимо запустить командную строку (Пуск \ Приложения \ Служебные программы \ Командная строка ) или Win+R \ cmd .
Первым делом необходимо перейти в режим работы с FTP сервером делается это через команду FTP
Вводим ИМЯ_ПОЛЬЗОВАТЕЛЯ который имеет доступ к данному серверу и ПАРОЛЬ
Если мы ведем команду DIR то нам выведется список файлов и папок которые содержатся на FTP сервере.
Я не буду рассказывать о всех командах, которые используются для работы с FTP сервером через командную строку, а только те, которые нам понадобится для написания скрипта. Главным образом это команды, позволяющие копировать файлы с FTP-сервера на наш локальный компьютер и наоборот с локального компьютера на FTP-сервер.
Вы всегда можете набрать команду HELP и вам выведется список поддерживаемых команд, чтобы узнать назначение команды достаточно ввести HELP НАЗВАНИЕ_КОМАНДЫ.
Но, тут описание очень скромное, поэтому, если вы хотите узнать более подробное описание различных команд, заходите ко мне на сайт в тематическую статью. Ссылку я размещу в описании к данному видео.
У меня нет доступа для непосредственно записи файлов в корень данного FTP-сервера, но есть доступ к папке htdocs, поэтому для начала перейдём в данную папку. Делается это команды CD ИМЯ_ПАПКИ .
Мы видим, что в данной папке у нас ничего нет. Давайте попробуем скопирую сюда какой-нибудь файл с нашего локального компьютера. Для этого на локальном компьютере создадим папочку, допустим у меня это будет nod32_update так как в одном из следующих видео, я буду рассказывать о том, как написать скрипт для автоматического обновления антивируса NOD32. И давайте создадим какой-нибудь текстовый документ допустимым 123.txt .
Чтобы скопировать файл 123.txt на FTP-сервер вводим команду PUT c:\nod32_update\123.txt . Файл скопирован, можем проверить это командой DIR . Как вы видите, файл скопировался именно в ту папку, в которую мы перешли через команду CD .
Если нам необходимо скопировать все файлы с определенной папки на локальном компьютере в папку на FTP сервере, то нам необходимо указать текущий локальный каталог и каталог на сервере.
Каталог на сервере мы научились указывать, через команду CD
Локальный каталог указывается через команду LCD , если мы её наберем, то увидим, что текущий каталог - это папка с профилем текущего пользователя. А так как я собираюсь копировать файлы из другой папки то ввожу команду LCD ПУТЬ_К_НУЖНОЙ_ПАПКЕ
В чем суть, есть команда MPUT которая копирует файлы из локальной папки на удаленную и она не запрашивает какие именно это папки, поэтому нам эту информацию нужно сообщить.
Для того, чтобы скопировать все файлы из локальной папки в удаленную я указываю команду MPUT *.* , где *.* означает все файлы находящиеся в локальной папке.
Здесь у нас задаётся вопрос подтверждение для каждого файла хотим его скопировать или нет для этого живём Enter. Чтобы подобные подтверждение не выводились есть команда PROMT отключает интерактивный режим выключен.
Теперь попробуем сделать обратное действие, а именно скопировать все файлы с удаленной папки на FTP сервере в локальную. Делается это через команду MGET *.* .
Как видите всё отлично, в нашей папке появились все необходимые файлы и теперь мы можем закончить работу с FTP сервером через командуQUIT .
И задумался: а все ли знают, что для работы с FTP-хранилищами вполне достаточно штатных инструментов Windows? В этой статье я опишу три простых метода передачи файлов по FTP на примере . Те же приемы действуют и в . Вам понадобятся всего лишь , Проводник и командная строка.
Способ первый: Internet Explorer 8
Любому пользователю Интернета знакомы HTTP-адреса для доступа к веб-сайтам, которые вводятся в адресной строке браузера - например, . Адреса для доступа к FTP-серверам строятся по такому же принципу: .
Введите в адресной строке адрес общедоступного FTP-хранилища, например, Microsoft (рис. A) и нажмите . В случае успешного подключения вы увидите корневой каталог. Для доступа к подкаталогам и файлам нажмите на основном каталоге. Чтобы загрузить файл, нажмите на нем правой кнопкой мыши и выберите опцию «Сохранить объект как» (Save Target As).
Как видите, на сервере хранятся все статьи базы данных, исправления, обновления, утилиты и документация Microsoft, только представлены они в виде списка с датами. Подробные сведения о FTP-хранилище содержатся в файлах «readme.txt».
Рисунок A. FTP-сервер Microsoft - вид из Internet Explorer 8.
Обратите внимание: для успешного подключения к FTP-серверу с помощью IE должны быть включены опции «Разрешить просмотр FTP-папок (за пределами Internet Explorer)» (Enable FTP folder view (outside of Internet Explorer)) и «Использовать пассивный FTP-протокол (для совместимости с брандмауэрами и DLS-модемами)» (Use Passive FTP (for firewall and DSL modem compatibility)) в разделе «Обзор» (Browsing) на вкладке «Дополнительно» (Advanced) диалогового окна «Свойства обозревателя» (Internet Options). Вызвать его можно из меню «Сервис» (Tools).
Для доступа к частным FTP-серверам необходимо ввести имя пользователя и пароль (рис. B). Однако таким способом в IE 7 или IE 8 можно посмотреть лишь список файлов. Для загрузки придется воспользоваться Проводником (Windows Explorer). Подробнее см. на рис. C, D, E и F.
Рисунок B. Для доступа к частным FTP-серверам требуется имя пользователя и пароль.
Рисунок C. Выберите опцию «Страница | Открыть FTP-узел в Проводнике Windows» (Page | Open FTP Site in Windows Explorer) или «Вид | Открыть FTP-узел в Проводнике Windows» (View | Open FTP Site in Windows Explorer), чтобы запустить Проводник.
Рисунок D. В диалоговом окне с предупреждением безопасности Internet Explorer нажмите кнопку «Разрешить» (Allow).
7 ответов
Windows фактически не поддерживает пассивный режим.
Вы можете отправить команду на сервер тремя разными способами, но это не позволит включить пассивный режим на стороне клиента Windows.
Эти аргументы предназначены для отправки различных команд, а pasv - это не то, о чем думала Microsoft, когда они ее написали.
Вам нужно будет найти стороннее программное обеспечение, такое как WinSCP, которое поддерживает использование командной строки и использует это вместо родного Windows.
Клиент командной строки Windows FTP (ftp.exe) не поддерживает пассивный режим в любой версии Windows. Это делает его сегодня бесполезным из-за вездесущих брандмауэров и NAT.
Использование quote pasv не поможет. Он переключает только сервер в пассивный режим, но не клиент.
Вместо этого используйте любой другой клиент командной строки Windows FTP. Большинство других поддерживают пассивный режим.
Клиент CURL поддерживает протокол FTP и работает в пассивном режиме. Загрузите версию WITHOUT SSL, и вам не нужны библиотеки openssl.dll. Только одно приложение командной строки curl.exe.
Curl.exe -T c:\test\myfile.dat ftp://ftp.server.com/some/folder/myfile.dat --user myuser:mypwd
Другим является Putty psftp.exe, но запрос проверки ключа сервера требует трюка. Эта командная строка вводит NO для клавиши подсказки подсказки, которая не хранится в реестре только в этот раз. Вам нужен внешний script файл, но иногда он хорош, если вы копируете несколько файлов вверх и вниз.
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
Echo n | psftp.exe ftp.server.com -l myuser -pw mypwd -b script.txt
script.txt(любая команда ftp может быть напечатана)
Put "C:\test\myfile.dat" "/some/folder/myfile.dat" quit
Команда quote PASV не является командой программы ftp.exe , это команда FTP-сервера, запрашивающая порт высокого порядка для передачи данных. Пассивная передача - это та, в которой данные FTP по этим портам высокого порядка, в то время как управление поддерживается в нижних портах.
Программа windows ftp.exe может использоваться для отправки команд FTP-сервера для пассивной передачи данных между двумя FTP-серверами. Стандартная установка Windows не будет и, вероятно, не должна иметь службу FTP-сервера, работающую как конечную точку для пассивных передач. Поэтому, если требуется пассивная передача со стандартным окном, требуется другое решение, кроме ftp.exe , как FTPing для localhost, поскольку одно из соединений не будет работать в большинстве оконных сред.
Вы можете осуществлять пассивную передачу FTP между двумя разными хостами (но не с двумя соединениями на одном хосте) следующим образом:
Откройте два запроса, используйте один для ftp.exe для подключения к исходному FTP-серверу, а один к ftp.exe подключитесь к вашему FTP-серверу назначения.
Теперь установите пассивное соединение между серверами, используя необработанные команды PASV и PORT. Команда quote PASV ответит IP/портом в многоточии. Используйте эти данные для команды quote PORT . Ваша пассивная ссылка теперь установлена, если брандмауэры не заблокировали один или несколько из четырех портов (2 для управления FTP, 2 для данных FTP)
Затем начните прием данных с помощью команды quote STOR
так для меня:
Client 1 > ftp.exe server1 ftp> quote PASV 227 Entering Passive Mode (10,0,3,1,54,161) client 2 > ftp.exe server2 ftp> quote PORT 10,0,3,1,54,54,161 ftp> quote STOR myFile client 1 ftp> quote RETR myFile
Cavet: я подключаюсь к некоторым старым FTP-серверам YMMV
Это обычная проблема. когда мы запускаем ftp-соединение, только внешний ip открывает порт для соединения pasv. но ip за NAT не открывает соединение, поэтому пассивное соединение терпит неудачу с командой PASV
нам нужно указать, что при открытии соединения так открытое соединение с