Утилиту «ftp.exe», входящую в состав Windows по умолчанию, можно запустить из командной строки. Она позволяет скачивать и загружать файлы по протоколу FTP вручную, но главное ее достоинство — функции автоматизации. С ее помощью можно запланировать и автоматизировать передачу файлов по FTP на регулярной основе.
Чтобы получить справку по утилите FTP, введите в командной строке ftp -? и нажмите [Enter]. Чтобы посмотреть список доступных команд, введите ftp и нажмите [Enter] для запуска утилиты, а затем введите ? и снова нажмите [Enter]. Для завершения работы утилиты введите bye и нажмите [Enter].
Для автоматизации загрузки и скачивания можно использовать командные файлы и сценарии FTP. Ниже приводятся примеры таких сценариев. Замените в них выделенный курсивом текст на нужное имя хоста, имя пользователя, пароль, путь к локальному файлу и путь к удаленному каталогу.
Передача одного файла
Скопируйте в Блокнот (Notepad) следующий текст, подставив нужные значения, и сохраните его как «H:\TransferTest\transfer.bat».
ftp -v -n -s:H:\TransferTest\transfer.ftp
Назначение команд:
• ftp — запускает утилиту FTP; • -v — отключает вывод информации об ответах удаленного FTP-сервера; • -n — отключает автоматический вход; • -s: — указывает путь к файлу, содержащему команды для FTP-передачи. Путь не должен содержать пробелов.
Затем скопируйте в Блокнот следующий текст, подставив нужные значения, и сохраните его как «H:\TransferTest\transfer.ftp».
open example.yourhostingsite.com user yourusername password cd /public_ftp/test put “W:\pecos-softwareworks\shtml\changes_to_the_windows7_taskbar_you_should_know_about.shtml” bye
Назначение команд:
• open — открывает удаленный FTP-сервер; • user — указывает имя пользователя для входа на сервер; • password — указывает пароль для входа на сервер; • cd — переходит в указанный удаленный каталог для загрузки файлов, в данном примере — «/public_ftp/test»; • put — загружает указанный локальный файл на удаленный сервер; кавычки можно не использовать, если путь не содержит пробелов; • bye — завершает сеанс подключения и работу утилиты FTP.
Совет: команды FTP можно сокращать до трех символов — например, использовать bin вместо binary.
Еще один совет: длинные пути неудобно вводить вручную — это слишком долго, да к тому же, высока вероятность совершить ошибку. Чтобы облегчить себе задачу, воспользуйтесь одним из следующих методов:
• Откройте в Проводнике папку, в которой хранится нужный файл, нажмите правой кнопкой мыши на любом фрагменте адреса в адресной строке и выберите опцию «Копировать адрес как текст» (Copy Address as Text). Вставьте скопированный адрес в сценарий FTP и добавьте к нему имя файла. • Нажмите правой кнопкой мыши на файле в Проводнике, выберите опцию «Свойства» (Properties) и откройте вкладку «Безопасность» (Security). Скопируйте полный путь к файлу из строки «Имя объекта» (Object name) и вставьте его в сценарий FTP.
В командной строке введите H:\TransferTest\transfer.bat и нажмите [Enter] или запустите командный файл двойным щелчком. При этом может появиться предупреждение безопасности, показанное на рис. I.
Рисунок I. Выберите опцию «Общественные сети» (Public Networks) и нажмите кнопку «Разрешить доступ» (Allow Access).
Рисунок J. Команда put загружает файл с клиентского компьютера на сервер. Если такой файл на сервере уже есть, он будет заменен.
Для скачивания файла с удаленного сервера на клиентский ПК используется команда get.
Передача нескольких файлов
Скопируйте в Блокнот следующий текст, подставив нужные значения, и сохраните его как «H:\TransferTest\multiple_transfer.bat».
cd /D W:\pecos-softwareworks\shtml ftp -v -n -s:H:\TransferTest\multiple_transfer.ftp
Скопируйте в Блокнот следующий текст, подставив нужные значения, и сохраните его как «H:\TransferTest\multiple_transfer.ftp».
open example.yourhostingsite.com user yourusername password cd /public_ftp/test prompt mput “changes_to_the_windows7_taskbar_you_should_know_about.shtml” “a_case_of_maxtaken_identity.shtml” lcd \Projects\PSWW\VIC\Package binary mput “vista_image_capture_1_1_2.zip” “vista_image_capture_1_2_0.zip” bye
Назначение команд:
• open — открывает удаленный FTP-сервер; • user — указывает имя пользователя для входа на сервер; • password — указывает пароль для входа на сервер; • cd — переходит в указанный удаленный каталог для загрузки файлов, в данном примере — «/public_ftp/test»; • prompt — отключает интерактивные приглашения на ввод при загрузке множественных файлов с использование команды mput; • mput — загружает указанные файлы ASCII с локального ПК; кавычки можно не использовать, если путь не содержит пробелов; • lcd — переходит в указанный локальный каталог, в котором хранятся файлы для загрузки, в данном примере — «\Projects\PSWW\VIC\Package»; • binary — переключается в режим двоичной передачи; • mput — загружает указанные бинарные файлы с локального ПК; кавычки можно не использовать, если путь не содержит пробелов; • bye — завершает сеанс подключения и работу утилиты FTP.
Теперь в командной строке введите H:\TransferTest\multiple_transfer.bat и нажмите [Enter] или запустите командный файл двойным щелчком (рис. K).
Рисунок K. Этот сценарий позволяет загрузить на сервер сразу несколько файлов.
Обратите внимание — я использовал команду cd для смены каталога в командном файле и команду lcd для смены локального каталога в сценарии FTP, чтобы упростить команду mput за счет использования относительного пути вместо полного.
Совет: пробелы в именах файлов могут привести к возникновению проблем при передаче файлов, поэтому вместо них желательно использовать подчеркивания, если это возможно.
Команда mput позволяет загрузить несколько файлов с клиентского компьютера на удаленный сервер. Если на сервере такие файлы уже существуют, они будут заменены.
Для скачивания нескольких файлов с удаленного сервера на локальный ПК используйте команду mget.
Передача текстовых и бинарных файлов
Передача текстовых (ASCII) и двоичных файлов с помощью утилиты FTP осуществляется по-разному. По умолчанию, утилита загружает файлы в режиме ASCII — именно такой способ используется в приведенном выше примере с передачей одного файла. В примере с загрузкой нескольких файлов присутствуют оба типа файлов — и ASCII, и бинарные. Чтобы предотвратить потерю данных, необходимо использовать подходящий метод передачи для каждого конкретного файла.
Проблемы безопасности
При передаче файлов по протоколу FTP возникает очевидная угроза безопасности. Если имя пользователя и пароль хранятся в незашифрованном текстовом файле, их может украсть любой, кто имеет доступ к компьютеру. Так что сценарий FTP стоит зашифровать. Подробнее о шифровании можно узнать в штатной справке Windows, воспользовавшись поиском по ключевому слову «шифрование». Нужные сведения содержатся в разделе «Шифрование или расшифровка папки или файла» (Encrypt or Decrypt a Folder or File). О шифровании в Windows 2000, Windows Server 2003, Windows XP, Windows Vista и Windows 7 рассказывается также на сайте Microsoft. В Википедии приводится полный версий Windows, поддерживающих систему шифрования данных Encrypting File System (EFS). Кроме того, можно воспользоваться сторонним приложением для шифрования, например, TrueCrypt.
Проблемы при использовании брандмауэра
Если при попытке подключиться к FTP-серверу вы получаете сообщение об ошибке «425 Невозможно установить соединение: Время ожидания истекло» (Unable to build data connection: Connection timed out), скорее всего, проблема связана с брандмауэром. Утилита FTP не поддерживает передачу данных в пассивном режиме, поэтому при использовании брандмауэра могут возникать ошибки в передаче данных. Я сталкивался с такой проблемой при использовании Comodo Firewall 4.0. Чтобы ее устранить, необходимо разрешить утилите FTP удаленный доступ в настройках брандмауэра.
В заключение
Прежде чем пускаться на поиски стороннего приложения для работы с FTP, обратите внимание на встроенные инструменты Windows. Возможно, одного из описанных методов будет вполне достаточно для выполнения стоящих перед вами задач.