【发布时间】:2021-11-26 18:48:08
【问题描述】:
我每晚在 Debian Stretch 服务器上运行一个简单的 bash 脚本,以通过 VPN 在不同站点备份多个工业设备。随着这些设备的老化,它们似乎出现了一个问题,即它们将通过 FTP 连接但拒绝提供目录列表。这会导致 wget 生成非致命错误。
我希望 wget 遵循 --waitretry 的选项来处理此错误(来自手册页):
--waitretry=秒
如果您不希望 Wget 在每次检索之间等待,而只在下载失败的重试之间等待,则可以使用此选项。 Wget 将使用线性退避,在给定文件第一次失败后等待 1 秒,然后在该文件第二次失败后等待 2 秒,直到您指定的最大秒数。默认情况下,Wget 将假定值为 10 秒。
但是,它不是等待默认的 10 秒,而是在重试之间等待 30 分钟。它还重试了默认的 20 次,将备份延迟了几个小时。我搜索了手册页、wget 在线文档、本地 /etc/wgetrc,但找不到与 30 分钟或 1800 秒相关的选项。
这是显示 30 分钟延迟和响应的连续两次尝试:
--2021-11-26 03:08:52-- ftp://user:*password*@192.168.18.4/SD1/
(try: 2) => ‘192.168.18.4/SD1/.listing’
Connecting to 192.168.18.4:21... connected.
Logging in as user ... Logged in!
==> SYST ... done. ==> PWD ... done.
==> TYPE I ... done. ==> CWD (1) /SD1 ... done.
==> PORT ... done. ==> LIST ...
Error in server response, closing control connection.
Retrying.
--2021-11-26 03:38:55-- ftp://user:*password*@192.168.18.4/SD1/
(try: 3) => ‘192.168.18.4/SD1/.listing’
Connecting to 192.168.18.4:21... connected.
Logging in as user ... Logged in!
==> SYST ... done. ==> PWD ... done.
==> TYPE I ... done. ==> CWD (1) /SD1 ... done.
==> PORT ... done. ==> LIST ...
Error in server response, closing control connection.
Retrying.
我在命令行中添加了一个 --tries=5 和一个 --waitretry=30 选项来尝试覆盖 30 分钟的延迟:
wget --waitretry=30 -t 5 -m --no-passive -o ftplog ftp://user:password@192.168.18.4/SD1/
try 选项确实覆盖了默认的 20 次尝试,将其限制为 5 次尝试,但 waitretry 保持在 30 分钟。有人知道为什么会这样吗?
【问题讨论】: