【问题标题】:wget how to download only newer version of a filewget如何仅下载较新版本的文件
【发布时间】:2018-06-14 12:06:39
【问题描述】:

脚本定期使用 wget 从远程服务器下载一些数据文件:

CERTDIR=folder1
SPOOLDIR=folder2
URL="http://..."
FILENAME="$SPOOLDIR/latest.xml.gz"

/usr/bin/wget \
    -N \
    --quiet \
    --private-key=${CERTDIR}/keynopass.pem \
    --ca-certificate=${CERTDIR}/ca.pem \
    --certificate=${CERTDIR}/client.pem \
    "$URL" \
    --output-document ${FILENAME}

-N 开关用于打开时间戳。 (可能是多余的,这似乎是默认的)

我预计只有在有较新的远程版本时才会下载该文件。 但这种情况并非如此。实际下载完成,无论远程文件是否与本地文件具有相同的时间戳。

文件有点长,所以我的计划是经常检查新版本,但只在需要时下载。不幸的是,使用这种方法似乎是不可能的。

只是猜测:URL 没有引用文件,而是一个 api 调用。会不会是这个原因?

但是:本地文件的时间戳设置为远程文件的时间戳——所以我知道,时间戳信息是可用的。

我错过了什么吗?

注意事项:

  • 远程服务器不受我控制
  • 本地服务器运行ubuntu 16.04
  • wget --version:基于 linux-gnu 构建的 GNU Wget 1.17.1。

【问题讨论】:

    标签: download wget


    【解决方案1】:

    文档提到:

    -O 的使用并不意味着简单地表示“使用名称文件而不是 URL 中的那个;”相反,它类似于 shell 重定向: wget -O file http://foo 旨在像 wget -O - http://foo > file; 一样工作 文件将被立即截断,所有下载的内容都将写入那里。

    因此,-N(用于时间戳检查)不支持 结合-O:因为文件总是新创建的,它会 总是有一个非常新的时间戳。如果出现这种情况会发出警告 使用组合。

    因此,一种选择是省略-O 选项,让wget 下载文件(如果需要),然后在您的目标目录中创建一个名为latest.xml.gz 的符号链接,指向下载的文件...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-25
      • 1970-01-01
      • 2012-11-13
      • 1970-01-01
      • 2014-02-12
      相关资源
      最近更新 更多