- Сообщения
- 7,814
- Реакции
- 6,593
Все мы знаем сочетание буковок 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
LS или DIR
Показать список файлов и директорий в текущей папке на сервере.
Код:
ftp> ls
MLS или MDIR
Выгрузить список файлов из нескольких директорий в файл на Ваш компьютер.
Код:
ftp> mls dir1 dir2 dir3 mylocalfile.txt
CD
Перейти в указанную папку на сервере.
Код:
ftp> cd ../another/folder
Код:
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 через контекстное меню ++ копирование ссылки в буфер обмена
Последнее редактирование: