web-dev-qa-db-ja.com

リモートディレクトリを最新の状態に保ちながら接続に失敗した後、WinSCPを再接続します

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サーバーは、FilezillaServerバージョン0.9.54が正しくセットアップされています。 'myftp'パラメーターは、WinSCPGUIを使用して構成および名前が付けられたセクションです。

問題は、接続が失われると(誰かがサーバーマシンからケーブルを取り外すなど)、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'がセクションを存続させ、パラメーター 'reconnecttime'に基づいて120秒間再試行することを期待していました。なぜそれが起こらないのですか?

Windowsのバッチファイルと、セッションが閉じてもWinSCPを呼び出し続ける「goto」コマンドを使用して「トリック」を見つけましたが、それは不器用で、より良い解決策があるかどうか疑問に思います。

WinSCPバージョン5.7.6を使用しています。

2
marcelo.guedes

これ以上の解決策はありません。

gotoループを使用したソリューションは、keepuptodateコマンドに再接続するための最も簡単なソリューションです。

公式を参照してください スクリプト/接続の試行を再試行するためのWinSCPの例

もちろん、WinSCPスクリプトは exit command で終了する必要があるため、自動的に閉じます。

0
Martin Prikryl