Часто требуется автоматизировать процессы скачивания, загрузки и удаления файлов c FTP-сервера. Например, при работе с распределенными базами данных 1С или для сохранения резервных копий. Но не все знают, что эти процедуры можно выполнять из командной строки, не прибегая к дополнительному программному обеспечению, то есть средствам Windows. Ниже я приведу синтаксис команд для работы с FTP, а также примеры bat-файлов для этих операций.
1. Команда ftp
Для обмена файлами с FTP-сервером используется команда ftp, вот ее синтаксис:
FTP
[-v] [-d] [-i] [-n] [-g] [-s:имя_файла] [-a] [-A] [-x:sendbuffer]
[-r:recvbuffer] [-b:asyncbuffers] [-w:windowsize] [узел]
-v | Отключение вывода на экран ответов с удаленного сервера. |
-n | Отключение автоматического входа при начальном подключении. |
-i | Отключение интерактивных запросов при передаче нескольких файлов. |
-d | Включение отладочного режима. |
-g | Отключение глобализации имен файлов (см. команду GLOB). |
-s:имя_файла | Задание текстового файла, содержащего команды FTP, которые будут выполняться автоматически при запуске FTP. |
-a | Использование локального интерфейса для привязки соединения. |
-A | Анонимный вход в службу. |
-x:send sockbuf | Переопределение стандартного размера буфера SO_SNDBUF (8192). |
-r:recv sockbuf | Переопределение стандартного размера буфера SO_RCVBUF (8192). |
-b:async count | Переопределение стандартного размера счетчика async (3) |
-w:windowsize | Переопределение стандартного размера буфера передачи (65535). |
узел | Задание имени или адреса IP удаленного узла, к которому необходимо выполнить подключение. |
Как видно, здесь нет операторов для подключения к серверу и работы с файлами. Дело в том, что эта команда только запускает сеанс ftp:
!
Временный переход в оболочку.
append
Добавление в файл.
ascii
Установка режима передачи файлов в формате ascii.
bell
Выдача звукового сигнала по завершении команды
binary
Установка режима передачи файлов в двоичном формате.
bye
Завершение сеанса ftp и выход.
cd <удаленный_каталог>
Изменение рабочего каталога на удаленном компьютере, где:
<удаленный_каталог>
— имя каталога, который станет рабочим.
close
Завершение сеанса ftp.
debug
Переключение режима отладки.
delete <удаленный_файл>
Удаление файла на удаленном компьютере, где:
<удаленный_файл>
— имя файла для удаления.
dir [<удаленный_каталог>
] [<локальный_файл>
]
Вывод содержимого каталога удаленного компьютера, где:
<удаленный_каталог>
<локальный_файл>
disconnect
Завершение сеанса ftp.
get <удаленный_файл>
[<локальный_файл>
]
Получение файла, где:
<удаленный_файл>
<локальный_файл> —
имя файла на локальном компьютере.
glob
Переключение метасимвольного расширения имен локальных файлов.
hash
Переключение вывода «#» для каждого переданного блока данных.
help [<команда>
]
Вывод справочных сведений для команды ftp, где:
<команда> —
Команда, описание которой будет выведено, если не задана, произойдет вывод всех команд.
lcd [<локальный_каталог>
]
Изменение локального каталога рабочего компьютера, где:
<локальный_каталог>
— Имя нового локального каталога, если не задан то будет использоваться имя текущего каталога.
literal <команда_1> … <команда_n>
<команда_n>
— команды для отправки;
ls [<удаленный_каталог>
] [<локальный_файл>
]
Вывод сокращенного содержимого каталога удаленного компьютера, где:
<удаленный_каталог>
— каталог, содержимое которого будет выведено, если не задан, используется текущий каталог;
<локальный_файл>
— задает локальный файл, для сохранения в список, если не задан, список выводится на экран.
mdelete <удаленный_файл_1
> … <удаленный_файл_n
>
Удаление нескольких файлов на удаленном компьютере, где:
<удаленный_файл_n>
— имена файлов для удаления.
mdir <удаленный_каталог_1
> … <удаленный_каталог_n
> <локальный_файл
>
Вывод содержимого нескольких каталогов удаленного компьютера, где:
<удаленный_каталог_n>
— каталог, содержимое которого будет выведено;
<локальный_файл>
— задает локальный файл, для сохранения в список, если не задан, список выводится на экран.
mget <удаленный_файл_1>
… <удаленный_файл_n>
Получение нескольких файлов, где:
<удаленный_файл_n>
— удаленный файл для копирования.
mkdir <удаленный_каталог>
Создание каталога на удаленном компьютере, где:
<удаленный_каталог>
— имя удаленного каталога для создания.
mls <удаленный_каталог_1> … <удаленный_каталог_n>
<локальный_файл>
Вывод сокращенного содержимого нескольких каталогов удаленного компьютера, где:
<удаленный_каталог_n>
— каталог, содержимое которого будет выведено, если не задан, используется текущий каталог;
<локальный_файл>
— задает локальный файл, для сохранения в список.
mput <локальный_файл_1> … <локальный_файл_n>
Отправка нескольких файлов, где:
<локальный_файл_n>
— имя локальных файлов, которые будут скопированы.
prompt
Переключение интерактивной подсказки для составных команд.
put <локальный_файл>
[<удаленный_файл>
]
Отправка одного файла, где:
<локальный_файл
>
<удаленный_файл>
pwd
Вывод рабочего каталога удаленного компьютера.
quit
Завершение сеанса ftp и выход в командную строку.
quote <команда>
Отправка произвольной команды ftp, где:
<команда>
— команда для отправки.
recv <удаленный_файл>
[<локальный_файл>
]
Получение файла с использованием текущих настроек типов файлов, где:
<удаленный_файл>
— удаленный файл для копирования;
<локальный_файл
>
— имя файла на локальном компьютере.
remotehelp [<команда>
]
Получение справочных сведений о командах удаленной системы, где:
<команда
> — команда удаленной системы, если не задан, то выводится список всех команд.
rename <имя_файла>
<новое_имя_файла>
Переименование удаленного файла, где:
<имя_файла
>
— имя файла для переименования;
<новое_имя_файла
>
— новое имя файла.
rmdir <имя_каталога>
Удаление каталога на удаленном компьютере, где:
<имя_каталога
>
— имя каталога для удаления.
send <локальный_файл>
[<удаленный_файл>
]
Копирование одного файла с использованием текущих настроек типов файлов, где:
<локальный_файл
>
— имя локального файл для копирования;
<удаленный_файл>
— имя файла на удаленном компьютере.
status
Отражение текущего состояния подключения ftp.
trace
Переключение трассировки пакетов.
type [<имя_типа>
]
Установка типа передачи файлов, где:
<имя_типа
>
— тип передачи файлов, если не указан будет выведен текущий тип передачи файлов.
user <имя_пользователя>
[<пароль>
] [<учетная_запись>
]
Отправка сведений для подключения к удаленному компьютеру, где:
<имя_пользователя
>
— имя пользователя для подключения к удаленному компьютеру;
<пароль
>
— пароль, для указанного имени пользователя, если не указан, но требуется для подключения, команда ftp запросит его у пользователя;
<учетная_запись
>
— учетная запись для подключения к удаленному компьютеру, если не указана, но требуется для подключения, команда ftp запросит ее у пользователя;
verbose
Переключение режима вывода сообщений.
Рассмотрим небольшой пример.
Для начала напишем «батник», который будет загружать на сервер сайт файл file_data.dat из «С:\example » . Алгоритм работы bat-файла будет такой:
- Создаем файл transport.txt с последовательностью операторов ftp;
- Выполняем команду ftp, указав в качестве параметров созданный файл;
- Удаляем transport.txt.
В данном примере имя файла и директорий жестко прописаны в файле. Это не всегда удобно. Доработаем bat-файл таким образом, чтобы данные для загрузки он получал в качестве параметров, а также вынесем все изменяемые значения в переменные файла. Получим следующий код ():
Соответственно, чтобы скопировать файл file_data.dat из «C:\example » на FTP-сервер в «Temp\Backup » , потребуется запустить этот «батник» указав в качестве параметров имя файла, локальный и удаленный каталоги.
Аналогичным образом можно написать bat-файлы для и на FTP-сервере, а также исполняющий файл с произвольным набором инструкций.
Помогла ли Вам данная статья?
Понадобилось мне ежечасно отправлять файлы отчетов на FTP сервер и также дублировать отправку этих файлов в почту нескольким адресатам. После недолгих изысканий остановился на встроенной утилите ftp.exe (C:\Windows\System32\ftp.exe) и старом добром blat. Итак начнем. Нам надо ежечасно загружать все XML файлы с директории %dir%\file_export (где %dir% путь к нашей папке) на сервер ftp.server.com.
Новая версия на Python
Настраиваем выгрузку файлов на FTP
Создаем файл команд для ftp.exe
Создаем текстовый документ (например ftpcomm.txt) в нем прописываем:
login
password
cd IN
binary
bye
где:
login
- логин ftp сервера
pasword
- пароль на ftp сервер
cd IN
- переходим в нужную папку
binary
- устанавливаем двоичный способ пересылки файлов. При этом файл при передаче не перекодируется и записывается в неизмененном виде. Это наиболее надежный способ передачи файлов.
mput C:\%dir%\file_export\*.xml
- копируем один или несколько локальных файлов на удаленный компьютер с указанием директории
bye
- конец FTP сессии и выход с FTP сервера
Создаем файл export.bat
В нем прописываем:
где:
C:\WINDOWS\system32\ftp.exe
- Путь к утилите ftp.exe
-s:c:\%dir%\ftpcomm.tx
t - задаем путь к текстовому файлу содержащим команды FTP, команды будет автоматически запускаться после старта FTP.
-i
- отключение интерактивного режима при передаче нескольких файлов.
ftp.server.com
- прописываем адрес нашего FTP cервера.
Проверяем работу запустив export.bat. Видим что файлы выгрузились на FTP сервер. Но тут возникает проблема, если нам надо выгружать файлы раз в час то как исключить повторное отправление файлов? Решение банальное:
В файл export.bat дописываем:
cd /d C:\%dir%\file_export\
del *.xml
где:
cd /d C:\%dir%\file_export\
- переходим в директорию в которой хранятся файлы XML.
del *.xml
- удаляем все файлы XML.
Настраиваем отправку файлов на электронную почту
Для отправки файлов на почту используем утилиту blat (http://www.blat.net/). Скачиваем и Распаковываем в любой каталог, в нашем случае это c:\%dir\blat/
Установка blat. Вызываем командную строку. В командной строке переходим к нашей папке:
cd c:\%dir%\blat/
Запускаем установку blat (прописываем профиль blat в реестр, данные прописываются в реестр системы Windows в ветку: .
blat.exe -install smtp.yandex.ru Имя_ящика@yandex.ru 3 25 profile Имя_ящика@yandex.ru Ваш_Пароль
Где:
smtp.yandex.ru
- имя почтового сервера, через который будет выполняться отправка электронных писем.
Имя_ящика@yandex.ru
- имя отправителя, которое будет отображаться в поле.
3
- число попыток повторный отправки письма при сбое соединения с сервером.
25
- номер порта SMTP-сервера.
profile
- имя профиля.
Имя_ящика@yandex.ru
- имя пользователя, которое будет использоваться при подключении к SMTP-серверу.
Ваш_Пароль
- пароль, используемый при подключении к SMTP-серверу, т.е. пароль к почтовому ящику.
Добавление отправки писем в export.bat
В файл export.bat после строчки
C:\WINDOWS\system32\ftp.exe -s:c:\%dir%\ftpcomm.txt -i ftp.server.com
Прописываем:
где:
-p profile
– имя профиля blat (Указывали во время установки)
-charset windows-1251
(Выбираем кодировку Windows)
-to [email protected]
– адрес получателя письма
-subject "File export "
- Тема письма
-body "Auto export"
– Тело письма
-attach c:\%dir%\file_export\*.xml
– файлы или файл которые необходимо отправить
Если необходимо отправлять письма на несколько ящиков то прописываем данную строку несколько раз с указанием ящиков получателя:
blat.exe -p profile -charset windows-1251 -to [email protected] -subject "File export " -body "Auto export" -attach c:\%dir%\file_export\*.xml
blat.exe -p profile -charset windows-1251 -to [email protected] -subject "File export " -body "Auto export" -attach c:\%dir%\file_export\*.xml
blat.exe -p profile -charset windows-1251 -to [email protected] -subject "File export " -body "Auto export" -attach c:\%dir%\file_export\*.xml
Конечный файл export.bat
В итоге мы получаем файл export.bat в котором имеем строки:
C:\WINDOWS\system32\ftp.exe -s:c:\%dir%\ftpcomm.txt -i ftp.server.com
blat.exe -p profile -charset windows-1251 -to [email protected] -subject "File export " -body "Auto export" -attach c:\%dir%\file_export\*.xml
cd /d C:\%dir%\file_export\
del *.xml
В первой строке отправляем файлы на FTP сервер, во второй отправляем файлы электронной почтой, далее переходим в директорию где хранятся файлы и удаляем их.
Отправление файлов по расписанию
Напомню что нам необходимо отправлять файлы ежечасно, для этого создаем задачу в планировщике Windows. Где указываем что нам необходимо раз в час запускать export.bat.
Итог
В итоге мы имеем автоматизированную систему ежечасной отправки файлов на FTP сервер и электронную почту.
Всем привет сегодня расскажу про утилиту ftp.exe как инструмент для работы с FTP -серверами.
Для работы с FTP-серверами вовсе необязательно использовать громоздкие (и иногда не бесплатные) FTP-клиенты, для простейших операций вполне сгодится входящая в состав ОС Windows server 2008 R2 или Windows 7 утилита командной строки ftp.exe .
Чтобы запустить ftp.exe , нужно вызвать диалоговое окно «Выполнить » и набрать ftp . Клиент выведет строку приглашения в командном интерпретаторе cmd.exe и сразу будет готов к работе:
Утилита ftp.exe как инструмент для работы с FTP-серверами-01Синтаксис ftp.exe очень прост и достаточно подробно описан во встроенной справке, которую можно вызвать командой help :
В справочной системе ftp.exe существуют краткие описания всех команд. Их вызов осуществляется командой help . Посмотрим, например, что делает команда dir . Для этого наберем help dir :
Попробуем установить соединение с каким-нибудь ftp-сервером. Пусть это будет linuxcenter.ru. В этом нам поможет команда open linuxcenter.ru :
После подключения к ftp-серверу необходимо сообщить ему, в каком режиме мы будем с ним работать. Режимов всего два: port-mode channel и passive-mode data channel . В 99 случаях из 100 используется пассивный режим (подробнее о различиях скажет Википедия ), сообщаем серверу, что мы не исключение из правил, командой quote PASV :
Теперь мы можем приступать к выполнению операций с данными: переходить по структуре каталогов и выводить их листинги, осуществлять upload и download файлов, менять форматы пересылаемых данных и пр. Однако, ftp-серверы бывают разными. Поэтому сперва будет нелишним ознакомиться с синтаксисом, поддерживаемым удаленным сервером. Для этого есть команда remotehelp :
Чтобы закрыть активное соединение, используйте команду close , для выхода из ftp.exe - quit . И help вам в помощь. Вот так вот еще можно работать с ftp сервером. Материал сайта
Протокол FTP является одним из распространенных сетевых протоколов, используемых пользователями сети Интернет. Подавляющее количество людей используют, для выкачивания чего-либо с FTP-серверов, различные клиенты FTP. Но не многие знают, что в Windows доступна возможность подключения к FTP-серверам из командной строки.
Из этого совета вы узнаете о том, как скачивать файлы с FTP-серверов при помощи простых DOS-команд .
Для того, чтобы скачать файл с FTP из командной строки Windows , выполним несколько простых действий:
- Откройте командную строку Windows, нажав на Пуск - Выполнить, набрав cmd и нажав на Enter.
- Выполните следующую команду: при помощи этой команды, мы подключимся к ftp-серверу компании Microsoft.
- Вводим имя пользователя anonymous. Сервер этой известной компании позволяет подключаться анонимным пользователям:
- В качестве пароля вводим e-mail (можно ввести несуществующий):
- Поздравляю с успешным входом!
- Для того, чтобы посмотреть, какие файлы и каталоги доступны на ftp-сервере, вводим команду dir:
- В результате - получаем список файлов и каталогов, расположенных на ftp-сервере:
- Для того, чтобы перейти в необходимый каталог, воспользуемся командой cd:
- Сообщение "250 CWD command successeful" скажет о том, что мы успешно перешли в нужный нам каталог:
- Для того, чтобы скачать нужный нам файл, введем команду get и имя загружаемого файла:
- После успешного получения файла, система оповестит нас:
- Для того, чтобы покинуть ftp-сервер и отключиться от него, выполните команду bye:
Возможно, многие скажут, что гораздо удобнее скачивать файлы при помощи многофункциональных менеджеров загрузки или ftp-клиентов.. Но при необходимости (или в качестве альтернативы), вы можете использовать простые DOS-команды , которые позволят вам скачать файлы с ftp без дополнительных затрат.
Стандартная утилита Windows "FTP-клиент" из командной строки (CMD) - для резервного копирования или скачивания файлов без вашего участия (автоматически).
- open - подключение к удаленному хосту по FTP ;
- cd - переход в другой каталог на сервере;
- bin - бинарный режим передачи данных между сервером и клиентом;
- put - передача файлов на FTP ;
- bye - завершение сеанса с сервером и выход.
Дабы освоить FTP-клиент windows и начать работать с ним, попробуем осуществить подключение к любому FTP-серверу в консольном режиме, например 213.43.125.75.
Вводим open 213.43.125.75 (это IP-адрес FTP-сервера), вместо него вводим адрес или домен нужного Вам сервера FTP, от вас потребуется ввести имя пользователя и пароль. После успешной авторизации создаём папку для размещения архивов на FTP, не долго думая, именуем ее backup (папка создаётся командой mkdir). Теперь переходим в созданный нами каталог следующей командой: cd back-up. На следующем этапе копируем файл на сервер, для чего требуется устанавливить режим передачи файлов в "бинарный" командой bin без какихлибо параметров. И теперь уже вводим put D:/back-up/back-up.zip, где параметром команды put будет полный путь к копируемому файлу. При копировании можно указавать маску в каталоге например: D:/back-up/*.zip (*.zip - все файлы с расширением "zip"). После копирования, закрываем соединение с сервером командой bye.
Чтобы наш FTP клиент делал всё автоматически, не задавая вопросов, создадим для него сценарий. Ниже приведён текстовый файл (назовем его back-up.ftp и сохраним в корень диска C:/ - для простоты использования и написания в строку запуска), содержащий в себе ряд команд для FTP клиента, которые будут автоматически выполняться при запуске FTP-клиента из командной строки.
Open 213.43.125.75 (вместо цифр - адрес нужного FTP сервера)
пользователь
пароль
cd back-up (переход в существующий каталог на FTP сервере)
bin (Режим передачи - бинарный)
put D:/back-up/back-up.zip (Путь к файлу на вашем компьютере)
bye (Завершение соединения)
В итоге должен получиться файл back-up.ftp следующего содержания:
open 213.43.125.75
пользователь
пароль
cd back-up
bin
put D:/back-up/back-up.zip