早上好,我有一个自定义软件,使用自定义更新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 未修改”和“省略下载”,您就知道您可以跳过版本控制。