1. Введение
2. Синтаксис и параметры DriveHQ CommandFTP
3. Создание файлов FTP-скриптов
3.1 Пример файла FTP-скрипта
3.2 FTP-скрипт с параметрами
4. Автоматизируйте передачу файлов с помощью планировщика задач Windows
5. Автоматическая синхронизация папок с помощью DriveHQ CommandFTP
6. Справочник команд FTP
6.1 Стандартные команды FTP
6.2 Расширенные команды FTP DriveHQ
1. Введение
DriveHQ CommandFTP — это мощный FTP- и SFTP-клиент с интерфейсом командной строки, разработанный для замены FTP-клиента Windows. Он поддерживает FTP-скрипты и совместим с любыми стандартными FTP/SFTP-серверами.
FTP/SFTP чрезвычайно популярен для передачи больших файлов/папок через Интернет. FTP-клиент с командной строкой широко используется для автоматической передачи файлов с помощью FTP-скриптов. Многие используют встроенный FTP-клиент командной строки в Windows. Однако у встроенного FTP-клиента есть несколько существенных недостатков:
- 1. Он поддерживает только активный режим FTP, который часто блокируется маршрутизаторами, брандмауэрами или программным обеспечением безопасности.
- 2. Он поддерживает только обычный FTP без шифрования данных.
- 3. Автоматическое возобновление/повторная попытка не поддерживаются.
DriveHQ CommandFTP разработан для замены стандартного FTP-клиента Windows. Он обладает следующими преимуществами:
- 1. Он поддерживает как активный, так и пассивный режимы FTP.
- 2. Он поддерживает FTP через SSL (FTPS и FTPES) и SFTP.
- 3. Поддерживается автоматическое возобновление/повторная попытка.
- 4. Он поддерживает сжатие и шифрование данных.
- 5. Он поддерживает загрузку/выгрузку папок.
- 6. Он поддерживает зеркальное отображение/синхронизацию папок.
- 7. Он поддерживает ведение журнала событий для аудита и устранения неполадок.
- 8. После операции можно отправлять отчеты по электронной почте.
- 9. Он поддерживает более мощные FTP-скрипты.
Во многих случаях DriveHQ CommandFTP может напрямую заменить FTP-клиент Windows. У них схожий синтаксис и параметры командной строки. Однако DriveHQ CommandFTP предлагает гораздо больше возможностей. Он может обрабатывать сложные задачи передачи файлов всего одной командой. Благодаря поддержке SFTP, вы можете написать FTP-скрипт, но запустить его с помощью SFTP-сервера.
2. Синтаксис и параметры DriveHQ CommandFTP
Синтаксис
cmdftp FTP_SERVER [-u:USERNAME] [-p:PASSWORD] [-i] [-A] [-k:"PRIVATE_KEY_FILE"] [-s:"FTP_SCRIPT_FILE"] [-d:"LOG_FILE"] [-m:"SOURCE_FTP_SERVER", "DESTINATION_FTP_SERVER"] [CMDOPTIONS]
cmdftp [-s:"FTP_SCRIPT_FILE"] [-d:"logfile"]
Параметры
| Параметр |
Описание |
| FTP_SERVER |
Имя или IP-адрес FTP/SFTP-сервера, например, ftp.drivehq.com, ftp://ftp.drivehq.com или ftps://ftp.drivehq.com. Этот параметр обязателен, если в параметрах не указано -s:FTP_SCRIPT_FILE
|
|
| -u:USERNAME |
Указывает имя пользователя учетной записи FTP/SFTP. |
|
| -p:PASSWORD |
Указывает пароль учетной записи FTP/SFTP. |
|
| -k:"PRIVATE_KEY_FILE" |
Необязательный параметр. Указывает путь к файлу закрытого ключа SFTP. |
|
| -s:"FTP_SCRIPT_FILE" |
Необязательный параметр. Указывает путь к файлу FTP-скрипта. Если этот параметр указан, то остальные параметры игнорируются, за исключением параметра "-d:LOG_FILE". |
Параметры команды
| /xo[:time] |
Исключить старые файлы |
|
| /xn[:time] |
Исключить более новые файлы |
|
| /xf:filenames |
Исключить файлы, файлы разделяются запятой |
|
| /xd:foldernames |
Исключить папки, папки разделяются запятой |
Параметры ведения журнала
| -d:"LogFileName" |
Указывает путь к файлу журнала. Если используется параметр "-d" без указания LogFileName, то журнал будет отображаться в окне консоли. |
3. Создание файлов FTP-скриптов
FTP-скрипты очень популярны среди ИТ-администраторов и системных интеграторов. Они широко используются для автоматизированного резервного копирования данных и передачи файлов. FTP-скрипты позволяют создать текстовый файл, содержащий список команд и входных параметров FTP. Затем эти команды можно выполнить последовательно за один раз. Поскольку файл скрипта может содержать множество команд FTP, он может выполнять очень сложные задачи по передаче файлов.
Возможности FTP-скриптинга со стандартным FTP-клиентом Windows весьма ограничены: он поддерживает только обычный FTP, который небезопасен, и только FTP в режиме Active Model, который часто блокируется маршрутизаторами/брандмауэрами. DriveHQ CommandFTP поддерживает большинство функций FTP-клиента Windows, а также множество функций, недоступных в стандартном FTP-клиенте Windows. DriveHQ CommandFTP совместим со всеми стандартными FTP-серверами.
Чтобы написать скрипт для FTP, сначала выполните команды FTP в интерактивном режиме. Откройте командную строку и введите следующие команды, как показано на скриншоте ниже:
Эти команды обычно включают в себя: подключение к FTP-серверу, вход на сервер, вывод списка файлов/папок в каталоге, смену текущего каталога, загрузку/скачивание/удаление файлов и так далее. Если вы используете FTP лишь изредка, то описанный выше метод вполне подойдет. Однако, если вам необходимо многократно передавать/создавать резервные копии/удалять файлы, например, в рамках запланированной задачи резервного копирования или EDI (электронный обмен данными) с другой компанией, вы можете легко написать скриптовый файл, который можно использовать снова и снова. В сочетании с планировщиком задач, поддерживаемым операционной системой, вы можете автоматизировать бизнес-процесс.
Пример файла FTP-скрипта
Файл FTP-скрипта содержит те же команды/ввод, что и в интерактивном FTP-сессии. По сути, вам просто нужно создать текстовый файл в текстовом редакторе (например, в Блокноте) и ввести команды и ввод так же, как и в интерактивном режиме. Интерфейс CommandFTP от DriveHQ очень похож на интерфейс FTP-клиента для Windows. Следующие команды можно выполнить как в FTP-клиенте для Windows, так и в клиентах CommandFTP от DriveHQ. Чтобы использовать CommandFTP, введите cmdftp вместо ftp. Например::
C:\>ftp
ftp> open ftp.drivehq.com
Connected to ftp.drivehq.com.
220 Welcome to the most popular FTP hosting service! Save on hardware, software,
hosting and admin. Share files/folders with read-write permission. Visit http:/
/www.drivehq.com/ftp/;
User (ftp.drivehq.com:(none)): dhqdemo
331 User name ok, need password.
Password: xxxxxxxxx
230 User dhqdemo logged on.
ftp> cd test
250 CWD command successful. "/test" is current directory.
ftp> delete orders.xml.bak
550 File not found.
ftp> rename orders.xml orders.xml.bak
350 File exists, ready for destination name.
250 File "/test/orders.xml" renamed successfully.
ftp> put c:\test\orders.xml
200 Port command successful.
150 Opening BINARY mode data connection for file transfer.
226 Transfer complete
ftp: 41 bytes sent in 0.06Seconds 0.65Kbytes/sec.
ftp> quit
221 Bye
C:\>
Как видите, эти команды будут:
- Войдите на FTP-сервер: ftp.drivehq.com;
- Введите имя пользователя и пароль;
- Перейдите в локальную директорию "c:\test";
- Перейдите в FTP-каталог "/test";
- Удалите файл "Orders.xml.bak" (если он существует) на FTP-сервере;
- Переименуйте файл "Orders.xml" (если он существует) в "Orders.xml.bak" на FTP-сервере;
- Загрузите локальный файл "Orders.xml" на FTP-сервер;
- Выход
Вы можете запустить их в командной строке для отладки кода, прежде чем сохранять его в файл скрипта. Содержимое скрипта будет следующим:
open ftp.drivehq.com
USERNAME
xxxxxxxxx
cd test
delete orders.xml.bak
rename orders.xml orders.xml.bak
put c:\test\orders.xml
quit
Приведенный выше FTP-скрипт можно запускать ежедневно для автоматической передачи информации о новых заказах на FTP-сервер. Он загрузит на FTP-сервер последнюю версию файла "Orders.xml"; перед загрузкой файла он переименует (создаст резервную копию) предыдущего файла.
Для запуска FTP-скрипта достаточно выполнить команду FTP с опцией -s. В FTP-клиенте Windows можно использовать..:
ftp -s:ftpscript.txt
С помощью клиента DriveHQ CommandFTP вы можете использовать
cmdftp -s:ftpscript.txt
FTP-скрипты с параметрами
Приведённый выше FTP-скрипт является статическим. Его можно запускать многократно, но он не очень гибок. Например, если вам нужно передавать данные для нескольких клиентов, вы, вероятно, захотите использовать разные папки. Для повторного использования одного и того же FTP-скрипта необходимо добавить поддержку дополнительных параметров. Существует два решения:
(1) Используйте пакетный скрипт для динамического создания файла скрипта FTP. Пакетные скрипты Windows могут принимать параметры командной строки. Если вы используете FTP-клиент Windows, это единственное решение.
(2) DriveHQ CommandFTP поддерживает дополнительные параметры.
В первом способе вам потребуется создать пакетный файл, например, test.bat. Сохраните файл в папке C:\test. Запустить пакетный файл можно, введя команду..:
c:\test\test.bat PARAM1 PARAM2 ...
Файл test.bat будет выглядеть следующим образом:
@echo off
echo open ftp.drivehq.com> ftpscript.txt
echo USERNAME>> ftpscript.txt
echo PASSWORD>> ftpscript.txt
echo cd %1>> ftpscript.txt
echo delete %2.bak>> ftpscript.txt
echo rename %2 %2.bak>> ftpscript.txt
echo put c:\%1\%2>> ftpscript.txt
echo quit>> ftpscript.txt
Таким образом, вы можете передавать аргументы из пакетного файла в скрипт FTP. Один и тот же пакетный скрипт можно использовать для разных компаний, например.:
c:\test\test.bat c:\OrdersOfCompanyA ordersOfCompanyA.xml
c:\test\test.bat c:\OrdersOfCompanyB ordersOfCompanyB.xml
С помощью DriveHQ CommandFTP вы можете запускать FTP-скрипты с дополнительными аргументами. Таким образом, вам не нужно создавать пакетный файл. Вы можете просто запустить FTP-скрипт с помощью следующей команды:
cmdftp -s:ftpscript.txt argument1 argument2 argument3 ...
Файл FTP-скрипта необходимо немного изменить следующим образом:
# %1 is like "test", %2 is like "orders.xml"
# This file is saved as c:\temp\ftpscript2.txt
# to run it, use:
# cmdftp -s:c:\temp\ftpscript2.txt -%1:test -%2:orders.xml
open ftp.drivehq.com
USERNAME
PASSWORD
cd /%1
delete /%1/%2.bak
rename /%1/%2 /%1/%2.bak
put c:\%1\%2
quit
В приведенном выше скрипте имя папки заменено на %1, а имя файла — на %2. Для запуска FTP-скрипта необходимо указать эти параметры в качестве аргументов командной строки.
cmdftp -s:c:\temp\ftpscript2.txt -%1:test -%2:orders.xml
При выполнении скрипта программой DriveHQ CommandFTP файл %1 будет заменен на "test", а %2 — на "orders.xml".
4. Автоматизируйте передачу файлов с помощью планировщика задач Windows
Независимо от того, используете ли вы пакетный файл или напрямую DriveHQ CommandFTP, вы можете запланировать передачу файлов в Планировщике задач Windows. Вы можете настроить выполнение задачи ежедневно, еженедельно или ежемесячно. В расширенных настройках вы даже можете установить запуск задачи каждые несколько часов или минут. Вы можете установить время начала задачи. Чтобы запустить Планировщик задач, введите «Планировщик задач» в поле поиска (см. скриншот ниже):
Нажмите «Планировщик задач», это запустит планировщик задач Windows.
Чтобы создать задачу, нажмите «Создать простую задачу».
Введите название и описание задачи, затем нажмите «Далее».
Выберите расписание выполнения задачи. Вы можете выбрать ежедневное, еженедельное или ежемесячное выполнение. Если вы хотите запускать задачу ежечасно, вы можете сделать это позже в расширенных настройках. Нажмите «Далее», чтобы задать действие.
На странице «Действия» выберите «Запустить программу», затем нажмите «Далее».
Выберите программу DriveHQ CommandFTP (cmdftp.exe). Добавьте параметры командной строки в текстовое поле «Добавить аргументы». Параметр «Запустить в» необязателен. Вы можете указать ту же папку, что и EXE-файл. Нажмите «Далее», чтобы завершить создание задачи.
Чтобы получить доступ к расширенным настройкам, нажмите «Библиотека расписаний задач», и вы увидите список запланированных задач. Дважды щелкните задачу «Загрузка заказов», чтобы отредактировать ее настройки.
Обратите внимание, что по умолчанию задача будет выполняться только тогда, когда пользователь авторизован. Вы можете изменить этот параметр, чтобы задача выполнялась даже тогда, когда пользователь не авторизован.
5. Автоматическая синхронизация папок с помощью DriveHQ CommandFTP
DriveHQ CommandFTP поддерживает зеркальное отображение папок. Синхронизация локальной папки с папкой FTP очень проста. Просто используйте следующую команду:
cmdftp FTP_SERVER -u:username -p:password -m:"LOCAL_FOLDER|FTP_FOLDER"
С помощью планировщика задач Windows вы можете запустить эту команду для периодической синхронизации двух папок.
6. Справочник команд FTP
После подключения к FTP-серверу вы можете отправлять FTP-команды на этот сервер. FTP-клиент для Windows поддерживает следующие команды.
Обратите внимание, что эти команды не идентичны команде Команды FTP, определенные в протоколе FTP.
Обычно каждая команда протокола FTP решает только одну простую задачу. В клиенте FTP под управлением Windows одна команда FTP может использовать несколько команд протокола FTP.
DriveHQ CommandFTP похож на FTP-клиент для Windows. Он поддерживает аналогичные команды и синтаксис. Кроме того, он также поддерживает несколько специфических для DriveHQ расширенных команд FTP, например, команды для копирования, перемещения, загрузки, скачивания или удаления папок.
6.1 Команды FTP-клиента Windows
FTP-клиент для Windows (ftp.exe) поддерживает следующие команды FTP:
| Команды FTP |
Описание |
| ! |
Эта команда переключает режимы работы между локальной операционной системой и FTP-сервером. При подключении к FTP-серверу по умолчанию используется именно он. Если вы хотите выполнить команду локально, обычно можно использовать.. !CMD_NAME, e.g. !dir, !mkdir, и т. д. |
| ? |
Отображает справочную информацию. |
| append |
Добавить в файл. |
| ascii |
Установить режим передачи ASCII. |
| bell |
Включите функцию "Звуковой сигнал по завершении команды". |
| binary |
Установить двоичный режим передачи. |
| bye |
Отключите FTP-сессию и выйдите. |
| cd |
Сменить каталог. |
| close |
Завершить FTP-сессию. |
| delete |
Удаляет файл. |
| debug |
Включение или выключение режима отладки. |
| dir |
Выводит список файлов и подпапок в каталоге.
|
| disconnect |
Отключите FTP-сессию. |
| get |
Получить файл с удалённого FTP-сервера. |
| glob |
Включить или выключить функцию сопоставления шаблонов. При выключении символы-заменители в именах файлов (в помещать и получать Приказы воспринимаются буквально. |
| hash |
Переключить вывод символа «#» для каждого переданного буфера. |
| help |
Отобразить справочную информацию; обычно используется команда help COMMAND_NAME. |
| lcd |
Если ввести команду отдельно, отобразится текущий локальный рабочий каталог; в противном случае будет выполнена смена локального рабочего каталога. |
| literal |
Отправьте произвольную команду на подключенный FTP-сервер с ожидаемым ответом в одну строку. |
| ls |
Список файлов в FTP-папке. |
| mdelete |
Удалите несколько файлов на FTP-сервере. |
| mdir |
Выводит список файлов/подпапок нескольких FTP-каталогов. |
| mget |
Загрузите несколько файлов с FTP-сервера в свою локальную рабочую папку. |
| mkdir |
Создайте новую директорию. |
| mls |
Отобразить содержимое нескольких FTP-каталогов. |
| mput |
Загрузите несколько локальных файлов на FTP-сервер. |
| open |
Подключитесь к FTP-серверу. |
| prompt |
Включает или отключает интерактивные подсказки для нескольких команд. |
| put |
Загрузите один файл на FTP-сервер. |
| pwd |
Вывести информацию о рабочем каталоге на FTP-сервере. |
| quit |
Отключитесь от FTP-сервера и выйдите. |
| quote |
Аналогично буквальной команде (Отправить произвольную команду FTP). |
| recv |
Загрузить/получить файл с FTP-сервера. |
| remotehelp |
Получите помощь с удалённого сервера. |
| rename |
Переименовать файл на FTP-сервере. |
| rmdir |
Удалите каталог на FTP-сервере. |
| send |
Отправьте один файл. |
| status |
Отображает статус текущих опций. |
| trace |
Включить/выключить трассировку пакетов. |
| Type |
Установить тип передачи файла. |
| user |
Отправить информацию о новом пользователе (имя пользователя). |
| verbose |
Включить или выключить подробный режим отображения. |
6.2 Расширенные команды FTP DriveHQ
DriveHQ CommandFTP поддерживает несколько дополнительных расширенных команд FTP:
| Команды FTP |
Описание |
| download |
Скачать папку или файл.
Синтаксис: Download [FTP-FILEorFOLDER-PATH] [LOCAL-FILEorFOLDER-PATH]
|
| upload |
Загрузите папку или файл.
Синтаксис: Upload [LOCAL-FILEorFOLDER-PATH] [FTP-FILEorFOLDER-PATH]
|
| mirror |
Создайте зеркальную копию локальной папки и папки на FTP-сервере.
Синтаксис: MIRROR [LOCAL-FOLDER-PATH] [FTP-FOLDER-PATH]
|
| deleteoldfiles |
В указанной папке удалить файлы старше x дней.
Синтаксис: deleteoldfiles [FTP-PATH] /xo:[time]
|