我想通过 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 Server 版本 0.9.54。'myftp' 参数是使用 WinSCP GUI 配置和命名的部分。
问题是:当我失去连接时(比如有人从服务器机器上拔掉电缆),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 批处理文件和“goto”命令,如果会话关闭,它会继续调用 WinSCP,但它很笨拙,我想知道是否有更好的解决方案。
我正在使用 WinSCP 版本 5.7.6。
答案1
没有更好的解决办法。
使用goto
循环的解决方案是您可以获得的最简单的解决方案,可以重新连接命令keepuptodate
。
参见官方重试脚本/连接尝试的 WinSCP 示例。
当然,你的 WinSCP 脚本需要以exit
命令,使其自动关闭。