我想创建一个脚本,检查URL并在远程文件的“Last-Modified”头更改时执行操作(下载+解压缩)。我考虑使用curl获取头信息,但是我需要为每个文件存储它,并进行日期比较。有没有人有不同的想法,使用(主要)标准Unix工具?谢谢。
也许对于 curl
命令 的这些信息很重要:
简而言之,您需要:时间条件
HTTP允许客户端为所请求的文档指定时间条件。这可以使用If-Modified-Since或If-Unmodified-Since完成。您可以使用-z / --time-cond标志在Curl中指定它们。
例如,如果远程文件比本地副本更新,您可以轻松地进行下载。它将被执行如下:
curl -z local.html http://remote.server.com/remote.html
或者,仅当本地文件较新时才下载文件。只需要在日期字符串前面添加'-',如:
curl -z -local.html http://remote.server.com/remote.html
您可以指定“自由文本”日期作为条件。告诉Curl仅在昨天之后更新文件时才下载文件:
curl -z yesterday http://remote.server.com/remote.html
Curl随后将接受各种日期格式。通过在日期前面添加一个破折号“-”来始终使日期检查相反。
Java在你的情况下是否适用?我在我的一项作业中使用了Apache HTTPcore库进行类似的操作,你需要在将HTTP请求发送到服务器之前向其添加头部"If-Modified-Since",如果从服务器接收到的响应状态码不是304,则说明文件自检时间以来已更改。
curl -z
。可惜 HTTP 服务器似乎忽略了 if-modified-since :( 不过也许 curl 会修复它。我会尝试的 :) - ZeissSIf-Modified-Since
的格式?请参考这里,格式应该遵循RFC850,但必须使用GMT时间。无论如何,使用curl - z
命令可以避免为If-Modified-Since
头部正确设置格式而头疼。 - Jorge Ferreiracurl -z
可以解决问题了。 - ZeissS