我想创建一个脚本,用于检查 URL 并在远程文件的“Last-Modified”标头更改时执行操作(下载 + 解压缩)。我考虑过使用curl 获取标头,但随后我必须将其存储在每个文件的某个位置并执行日期比较。
有没有人对使用(大部分)标准 UNIX 工具有不同的想法?
thanks
一种可能的解决方案是定期在客户端上运行该算法。
- 创建一个 HTTP 请求,指示
If-Modified-Since
标头等于本地文件的日期。如果文件尚不存在,则不包含此标头;
- 如果文件自上次更改以来发生了更改,服务器将向您发送该文件
If-Modified-Since
有效负载或发送中的标头304 Not Modified
HTTP 状态。
- 如果您收到
200 OK
HTTP 状态只需从 HTTP 主体获取有效负载并解压缩文件。
- 另一方面,如果您收到了
304 Not Modified
您知道您的文件是最新的。
- Use the
Last-Modified
标题来触摸您的本地文件。这样您将与服务器日期时间同步。
另一种方法是服务器在文件更改时推送通知(例如广播包)。当收到通知时,客户端将执行上述算法。这意味着代码驻留在 HTTP 服务器中,监听文件系统更改,然后将它们广播给感兴趣的各方。
也许这个信息对于curl
command http://www.cs.sunysb.edu/documentation/curl/index.html有一定的重要性:
时间条件
HTTP 允许客户端指定时间
文档的条件 it
要求。它是 If-Modified-Since 或
如果-未修改-自。卷曲让你
使用 -z/--time-cond 指定它们
旗帜。
例如,您可以轻松地制作一个
仅在以下情况下执行的下载
远程文件比本地文件新
复制。它会被做成这样:
卷曲-z local.htmlhttp://remote.server.com/remote.html http://remote.server.com/remote.html
或者,您只能下载文件
本地文件比远程文件新
一。通过在日期前添加日期来完成此操作
带有“-”的字符串,如下所示:
卷曲-z-local.htmlhttp://remote.server.com/remote.html http://remote.server.com/remote.html
您可以将“自由文本”日期指定为
健康)状况。告诉curl只下载
文件(如果此后更新过)
昨天:
昨天卷曲-zhttp://remote.server.com/remote.html http://remote.server.com/remote.html
然后 Curl 将接受广泛的
日期格式。你总是安排约会
反过来检查
在其前面加上破折号“-”。在其前面加上破折号“-”。
总而言之,您将需要:
- 卷曲命令 http://linux.about.com/od/commands/l/blcmdl1_curl.htm
- 触摸命令 http://linux.about.com/od/commands/l/blcmdl1_touch.htm
- some bash 脚本
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)