- Сообщения
 - 8,143
 
- Решения
 - 27
 
- Реакции
 - 6,959
 
Все мы знаем сочетание буковок 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 через контекстное меню ++ копирование ссылки в буфер обмена
			
				Последнее редактирование: