下载命令

curl

curl --fail --retry 0 --connect-timeout 1 --max-time 3 --retry-delay 1 --remote-time --silent -o - "$url"
  • --fail:如果请求失败(例如HTTP状态码不是2xx),curl会返回非零退出码。
  • --retry 0:设置最大重试次数为0次。如果下载失败,curl 不会进行重试。
  • --connect-timeout 1:设置连接超时时间为1秒。如果连接超过1秒仍未建立,curl 将退出并认为连接失败。
  • --max-time 3:设置总体超时时间为3秒。如果下载超过3秒仍未完成,curl 将退出并认为下载失败。
  • --retry-delay 1:设置重试之间的等待时间为1秒。这样可以在尝试下载之间增加一些延迟,以降低对服务器的负载。
  • --remote-time:将远程文件的时间戳设置为本地文件的时间戳。这样可以确保只下载更新的文件。
  • --silent:静默模式,禁止显示进度和其他信息。
  • -o -:将远程文件保存到标准输出(stdout),而不是保存到文件中。

短命令

curl -f -s -m 3 -z "$local_file" -o "$output_file" "$url"
  • -f:如果请求失败(例如HTTP状态码不是2xx),则curl会返回非零退出码。
  • -s:静默模式,禁止显示进度和其他信息。
  • -m 3:设置总体超时时间为3秒。如果下载超过3秒仍未完成,curl将退出并认为下载失败。
  • -z "$url":指定一个时间戳,表示只下载比该时间戳更新的文件。
  • -o output_file:将下载的内容保存到指定的文件中。

时间戳

curl --fail --retry 0 --connect-timeout 1 --max-time 3 --retry-delay 1 --remote-time --silent --time-cond "$(echo "${url}" | xargs basename)" -O "${url}"
  • --time-cond "$(echo "${url}" | xargs basename)":仅当远程文件的时间戳更新或本地文件不存在时,才下载文件。$(echo "${url}" | xargs basename) 提取URL中的文件名作为本地文件的名称。

wget

wget -t 1 -T 1 -w 1 -q -O - "$url"
  • -t 1:设置最大尝试次数为1次。如果下载失败,wget 不会进行重试。
  • -T 1:设置超时时间为1秒。如果下载超过1秒仍未完成,wget 将退出并认为下载失败。
  • -w 1:设置每个尝试之间的等待时间为1秒。这样可以在尝试下载之间增加一些延迟,以降低对服务器的负载。
  • -q:静默模式,不显示下载进度和其他信息。
  • -O -:将下载的内容写入标准输出(stdout)而不是保存到文件中。