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

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


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

Доброго времени суток!

Стоит такая задача, автоматически загружать все файлы из локальной папки на FTP сервер, в идеале с проверкой на изменение даты и размера файла, чтоб повторно не гонять файлы, но в принципе годится вариант и просто с перезаписью. Есть такая программка filezilla в ручном режиме можно осуществить копирование с проверкой, но автоматически делать это не получается ее заставить, а может она этого и не умеет.

Нашел вот такой пример bat файла

 

@echo off
echo user login> ftp.dat
echo password>> ftp.dat
echo bin>> ftp.dat
echo put %1>> ftp.dat
echo quit>> ftp.dat
ftp -n -s:ftp.dat ftpserver
del ftp.dat

 

вместо login, password, ftpserver вводим свои, это я понял, для того чтобы складывать не в корень фтп есть строчка

 

echo cd /путь/>>ftp.dat

 

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

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

но в какое место эту строчку вставить? И где здесь указывается локальный путь откуда берутся файлы для передачи?

вставить после удачной авторизации на сервере, но до передачи файлов ftp-командой put (например, прямо перед ней. сама строка echo bin>>... просто означает, что серверу дали команду передачи файлов в бинарном формате. насколько знаю, большинство серверов и так по умолчанию начинают работу в таком режиме, а не ascii)

в локальное место расположения на компьютере-клиенте можно просто перейти командой cd /локальный/путь/

в результате будет выглядеть как-то так:

@echo off
cd /локальный/путь/
echo user login> ftp.dat
echo password>> ftp.dat
echo bin>> ftp.dat
echo cd /путь/на/сервере/>>ftp.dat
echo put %1>> ftp.dat
echo quit>> ftp.dat
ftp -n -s:ftp.dat ftpserver
del ftp.dat

/путь/на/сервере/, естественно, относительно директории, куда по дефолту завалится юзер со своей авторизацией

 

 

Добавлено после раздумий:

в принципе, ftp-команды put и get позволяют сразу работать с "локальным" и "удалённым" файлами, тогда не понадобятся команды cd ни на локальном ни на удалённом компьютерах

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

ну как, результаты есть? хотя бы отрицательные?

можешь отписать по e-mail.

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

ну как, результаты есть? хотя бы отрицательные?

можешь отписать по e-mail.

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

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

Пользуюсь следующим приемом

 

1. Ставим _https://www.netdrive.net/download.html - она бесплатна для дома. Позволяет монтировать ftp на букву диска в вин

2. Ставим чудесную софтину freefilesync

 

синхронизируем содержимое

 

Freefilesync использую для синхронизации фотоколлекции дома, софтина - вещь

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

почему-то думаю, что Сергею это нужно для работы, поэтому будет нарушение лицензии.

я предпочитаю обходиться штатными средствами ОС. поэтому не сторонник устанавливать букет разношёрстных утилит неизвестного происхождения, если есть возможность решить задачу силами ОС

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

Владимир, а зачем ставить NetDrive?

freefilesync я так понимаю синхронизирует в ручном режиме? Нужно что то автоматическое, чтоб само не было постоянно включено, запускалось планировщиком делало то что нужно и выключалось.

 

pm, что то не то получается, после запуска бат файла открывается CMD окно, в нем типа процесс авторизации, заканчивается это так , дословно

ftp> put
Локальный файл quit
Удаленный файл quit: ftp>

 

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

user логин
пароль
bin
cd /локальный путь/
put 
quit

 

Да, забыл упомянуть, запускается это на машине с Win7, и если просто запустить бат файл, как раз все и происходит как описано, а если запустить от имени администратора, то файл в локальной папке не создается.

На фтп в обоих случаях ничего не происходит.

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

Владимир, а зачем ставить NetDrive?

freefilesync я так понимаю синхронизирует в ручном режиме? Нужно что то автоматическое, чтоб само не было постоянно включено, запускалось планировщиком делало то что нужно и выключалось.

freefilesync синхронизирует 2 локальные, либо смонтированные по сети папки. netdrive позволяет примонтировать ftp ресурс как диск в системе.

для работы по расписанию он:

1. спокойно вызывается из планировщика

2. может быть вызван из bat/cmd файла.

Кроме того, сейчас есть в комплекте еще и realtimesync, но я ей не пользовался.

там помощь отличная, с примерами.

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

...netdrive позволяет примонтировать ftp ресурс как диск в системе...

Не такой вариант не подойдет, постоянный доступ к фтп как к локальной папке совсем не нужен.

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

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

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

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

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

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

Войти

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

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

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