使用Wget跳过成功下载的文件

Skip successfully downloaded files using Wget

所以我有这个 Bash 子例程来使用 wget 下载文件,我现在的问题是如何跳过成功下载的文件。该脚本下载了很多文件,一旦下载失败,它会重新下载所有文件,覆盖从一开始就成功下载的文件(可能因为重新下载而不完整)。

那么如何跳过那些下载成功的文件呢?

DownloadFile() {
  paramURL=
  paramFilename=

  if [ $flag_archive_fetch = "false"  ];
  then
      wget "--timeout=180" "--tries=5" "$paramURL" "-O" "${scratch_dir}$paramFilename"
  else
      unzip -o "$archive_file" "$paramFilename" -d "${scratch_dir}"
  fi

  touch "${scratch_dir}$paramFilename"
}

您可以利用 Wget --continue(恢复中断的下载)和 --timestamping(仅当 Last-modified 属性更改时覆盖成功下载的文件,否则跳过下载)

wget "--continue ‐‐timestamping --timeout=180" "--tries=5" "$paramURL" "-O" "${scratch_dir}$paramFilename"

另一种选择是使用 --no-clobber 而不是 --timestamping,它会跳过已经下载的文件而不检查 Last-modified 属性,

 wget "--continue ‐‐no-clobber --timeout=180" "--tries=5" "$paramURL" "-O" "${scratch_dir}$paramFilename"

你可以查看 WGET exit status code by checking the $?

wget .....
# store the error
error=$?
if (( $error != 0 )) 
then
   #handle error
else
   #handle success
fi