仅当有新版本时才使用 Wget 下载

仅当有新版本时才使用 Wget 下载

早上好,我有一个自定义软件,使用自定义更新script.sh。文件的一部分内容如下:

if [[ $software == A ]]
  then
    echo "downloading package..."
    rm -rf test.zip >> SoftwareUpdate.log
    wget --user admin --password "test" https://update.example.com/software/test.zip >> SoftwareUpdate.log
    if test -f test.zip
     then
       echo "Performing Backup of Old software"
       zip -r backup/test-$now.zip /var/www/html/* >> SoftwareUpdate.log
       echo "Clearing out old software from folder html"
       rm -rf software/* >> SoftwareUpdate.log
       echo "Unziping new software"
       unzip test.zip -d software  >> SoftwareUpdate.log
       echo "Overwriting / Applying update ..."
       yes | cp -rf software/* /var/www/html/ >> SoftwareUpdate.log
       echo "Changing permissions"
       chown -R www-data /var/www/html/* >> SoftwareUpdate.log
      else
       echo "test.zip doesn't exist, please insure that update is available and try again"
     fi

我想要做的是在名称文件中包含版本,例如: test_1239.zip或者test_1531.zip 软件应该检查​​ wget 可用的版本是否比他上次下载的版本更新,如果是的话就继续。

因此,如果在线版本 = test_1531.zip 且上次下载的版本 = test_1239.zip 1531 大于 1239,则继续下载并更新。谢谢

答案1

保存您下载的最后一个 test.zip 中的“Last-Modified”标头内容,并使用收到的日期字符串在下一个 wget 请求中添加“If-Modified-Since”标头。

如果没有更新的 test.zip,服务器将以 304 应答。

或者,您可以将 test.zip 留在当前目录中,然后使用带有时间戳选项 (-N) 的 wget,如果服务器有较新版本,则只会下载 test.zip。检查 wget 的输出,如果它包含“304 未修改”和“省略下载”,您就知道您可以跳过版本控制。

答案2

你可以curl这样使用:

curl -o "$file" -z "$file" "$uri"

信息来源及解释这里

相关内容