Я хочу, чтобы локальный каталог синхронизировался удаленно через FTP. Если мое подключение к Интернету готово, я могу легко использовать WinSCP.com для подключения к FTP и поддерживать файлы в актуальном состоянии с помощью команды:
"c:\Program Files (x86)\WinSCP\WinSCP.com" /script=connect.script
Где мой сценарий:
# Connect
open myftp
# Change remote directory
cd /
# Set options
option batch continue
option reconnecttime 120
option confirm off
# Synchronize
synchronize remote
# Keep Up-to-date
keepuptodate -delete
FTP-сервер - это правильно настроенный сервер Filezilla версии 0.9.54. Параметр myftp - это раздел, настроенный и названный с использованием графического интерфейса WinSCP.
Проблема в том, что когда я теряю соединение (например, кто-то отсоединяет кабель от серверной машины), служба WinSCP умирает.
Connected
Starting the session...
Session started.
Active session: [1] myftp
/
batch continue
reconnecttime 120
reconnecttime 120
confirm off
Comparing...
Nothing to Synchronize.
Watching for changes, press Ctrl-C to abort...
Scanning '.' for subdirectories...
Watching for changes in 2 directories...
Lost connection.
Disconnected from server
Server is going offline
Session 'myftp' closed.
No session.
winscp>
Я ожидал, что keepuptodate сохранит раздел в рабочем состоянии и попытается повторить попытку в течение 120 секунд, в зависимости от параметра «reconnecttime». Почему этого не происходит?
Я обнаружил «уловку», используя командный файл Windows и команду goto, которая продолжает вызывать WinSCP, если сеанс закрывается, но это неуклюже, и мне интересно, есть ли лучшее решение.
Я использую WinSCP версии 5.7.6.
Нет лучшего решения.
Ваше решение с goto
loop - самое простое решение, которое вы можете получить, чтобы повторно подключиться к keepuptodate
команда.
См. Официальный Пример WinSCP для повторной попытки скрипта / попытки подключения.
Конечно, ваш сценарий WinSCP должен заканчиваться exit
команда, так что он автоматически закроется.