Перейти к содержанию

Автоматическая передача файлов на FTP сервер


Рекомендуемые сообщения

Спасибо за оперативные ответы.

 

Я изменил строчки в bat-файле:

@echo off
echo user myusername> ftp.dat
echo mypassword>> ftp.dat
echo bin>> ftp.dat
echo cd /public/xml/>>ftp.dat
echo mput a:\*.zip>> ftp.dat
echo prompt>> ftp.dat
echo quit>> ftp.dat
ftp -i -n -s:ftp.tmp pegast.com.ua
del ftp.dat

 

Вот, что выдал ФТП сервер:

E:\web.Site\signature>upload.bat
ошибка открытия файла макросаftp.tmp

Обмен файлами с компьютером, на котором запущена служба
сервера FTP. FTP может использоваться интерактивно.

FTP [-v] [-d] [-i] [-n] [-g] [-s:имя_файла] [-a] [-w:буфер] [-A] [узел]

 -v			Отключение вывода на экран ответов с удаленного сервера.
 -n			Отключение автоматического входа при начальном подключении.
 -i			Отключение интерактивных запросов при передаче нескольких
			файлов.
 -d			Включение отладочного режима.
 -g			Отключение глобализации имен файлов (см. команду GLOB).
 -s:имя_файла  Задание текстового файла, содержащего команды FTP, которые
			будут выполняться автоматически при запуске FTP.
 -a			Использование локального интерфейса для привязки соединения.
 -A			Анонимный вход в службу.
 -w:буфер	  Переопределение стандартного размера буфера передачи (4096).
 узел		  Задание имени или адреса IP удаленного узла,
			к которому необходимо выполнить подключение.

Примечания:
 - команды MGET и MPUT принимают параметры Y/N/Q как YES/NO/QUIT.
 - для прекращения выполнения команд нажмите <Ctrl>+<C>.

 

Ведь у меня стоит ключ -i, но все же где то ошибка в синтаксисе.

И второй вопрос:

если я правильно понимаю, то команда mput * копирует все файлы, а как же мне копировать файлы, только с расширением *.zip, при чем же они (файлы) лежат в специфической директории a:\*.zip?

 

Еще Вы спрашивали:

забирать или пересылать? будьте внимательны с направлением передачи. mget или mput соответственно. и ключ -i, чтобы автоматом, без подтверждений.

я буду копировать файлы из папки на ФТП. Как Вы уже увидели в коде я использую посоветованную Вами функцию mput. Но не могу понять, почему выдается такая ошибка.

Изменено пользователем selcet
Ссылка на комментарий
Поделиться на другие сайты

Я изменил строчки в bat-файле:

...
echo quit>> ftp.dat
ftp -i -n -s:ftp.tmp pegast.com.ua
del ftp.dat
...

 

Вот, что выдал ФТП сервер:

E:\web.Site\signature>upload.bat

ошибка открытия файла макросаftp.tmp

всё правильно. будьте внимательны. командами echo создается файл ftp.dat, а на исполнение подсовывается несуществующий ftp.tmp

 

Ведь у меня стоит ключ -i, но все же где то ошибка в синтаксисе.

ошибка, естественно. и вообще удобнее под эту задачу сделать постоянный файл с командами ftp, а не генерить его постоянно и удалять.

 

если я правильно понимаю, то команда mput * копирует все файлы, а как же мне копировать файлы, только с расширением *.zip, при чем же они (файлы) лежат в специфической директории a:\*.zip?

а что, с подстановкой *.zip не работает?

 

Но не могу понять, почему выдается такая ошибка.

теперь ясно?

Ссылка на комментарий
Поделиться на другие сайты

ошибка, естественно. и вообще удобнее под эту задачу сделать постоянный файл с командами ftp, а не генерить его постоянно и удалять.

Прошу извинить за глупый ответ, увы я даже не знаю, как измениться синтаксис файла, если таковой сделать.

Но попробую порыться в интернете и поискать, как создаются файлы ftp.

 

а что, с подстановкой *.zip не работает?

Теперь все сработало.

Вид синтаксис рабочего файла:

@echo off
echo user myusername> ftp.dat
echo mypassword>> ftp.dat
echo bin>> ftp.dat
echo cd /public/xml/>>ftp.dat
echo mput a:\*.zip>> ftp.dat
echo prompt>> ftp.dat
echo quit>> ftp.dat
ftp -i -n -s:ftp.dat pegast.com.ua
del ftp.dat

 

Но странно, что все равно в ответе видно, что такой папки не находит. А самое главное, что если после этого копирую файлы через Total, то спрашивает о замене существующих файлов. Значит bat-файл скопировал файлы на FTP, при чем в правильную директорию.

Путь у директории на ФТП: 0:/srv/pegast.com.ua/public/xml/

Парадокс.

Ответ:

Связь с pegast.com.ua.
220 ProFTPD 1.3.2c Server (Debian) [::ffff:83.229.211.211]
ftp> user myusername
331 Password required for myusername

230 User myusername logged in
ftp> bin
200 Type set to I
ftp> cd /public/xml/
550 /public/xml/: No such file or directory
ftp> mput a:\*.zip
a:\*.zip:╘рщы эх эрщфхэ
ftp> prompt
Интерактивный режим Вкл.
ftp> quit
221 Goodbye.

 

Теперь, надо бы разобраться, как после успешного копирования файлов на ФТП, вырезать файлы из директории "a:\" и записать их в директорию "a:\OLD (zip)\OLD-2012\08 till now\".

Возможно это уже вопрос не к Вам, но может Вы подскажете хотя бы направления куда двигаться?

Изменено пользователем selcet
Ссылка на комментарий
Поделиться на другие сайты

Прошу извинить за глупый ответ, увы я даже не знаю, как измениться синтаксис файла, если таковой сделать.

Но попробую порыться в интернете и поискать, как создаются файлы ftp.

 

не надо ничего искать, всё просто. достаточно закомментировать или удалить последнюю строку удаления временного файла:

del ftp.dat

запустить скрипт и после посмотреть этот самый файл ftp.dat

 

Вид синтаксис рабочего файла:

...
echo prompt>> ftp.dat
...

не понял, prompt зачем?

 

Но странно, что все равно в ответе видно, что такой папки не находит. А самое главное, что если после этого копирую файлы через Total, то спрашивает о замене существующих файлов. Значит bat-файл скопировал файлы на FTP, при чем в правильную директорию.

Путь у директории на ФТП: 0:/srv/pegast.com.ua/public/xml/

судя по всему на том сервере хостится много ftp серверов, похоже на виртуальные хосты под proftpd. надо залогинится и, оставаясь в корневой директории сервера, посмотреть список файлов/директорий в корне. корень, надо понимать, 0:/srv/pegast.com.ua/public/?

 

Парадокс.

Ответ:

...
ftp> cd /public/xml/
550 /public/xml/: No such file or directory
...

значит что-то сделано неправильно. права доступа к /xml на ftp сервере проверены?

 

Теперь, надо бы разобраться, как после успешного копирования файлов на ФТП, вырезать файлы из директории "a:\" и записать их в директорию "a:\OLD (zip)\OLD-2012\08 till now\".

Возможно это уже вопрос не к Вам, но может Вы подскажете хотя бы направления куда двигаться?

переместить как-то так:

mv a:\*.zip "a:\OLD (zip)\OLD-2012\08 till now\"

если хочется динамически менять имя директории назначения, например, привязав к дате и времени, то придётся скрипт усложнить. если ещё надо предварительно проверить корректность записанных на ftp сервер файлов и перемещение исходных в другую директорию делать только в случае успеха, то ещё будет сложнее.

Ссылка на комментарий
Поделиться на другие сайты

переместить как-то так:

mv a:\*.zip "a:\OLD (zip)\OLD-2012\08 till now\"

если хочется динамически менять имя директории назначения, например, привязав к дате и времени, то придётся скрипт усложнить. если ещё надо предварительно проверить корректность записанных на ftp сервер файлов и перемещение исходных в другую директорию делать только в случае успеха, то ещё будет сложнее.

 

Написал еще на втором форуме. Задача изначальная очень интересная, хоть и на первый взгляд простая.

cyberforum.ru/cmd-bat/thread681482.html#post3629571

Ссылка на комментарий
Поделиться на другие сайты

  • 4 года спустя...

Почитайте встроенный help по ftp.

Для получения файла или файлов вам нужны get или mget соответственно.

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...