原创文章,转载请注明出处http://zhouzaibao.iteye.com
问题场景:
最近有一个应用需要定期到服务器上下载一个文件,这个文件会根据情况进行更新,有可能10分钟更新一次有可能一天都不会更新。并且这个文件比较大,所以不能每次都去下载,在下载之前最好进行文件最后修改时间的判断。
问题分析:
我想用脚本来实现,不想动用java或者python这些编程。在linux的shell中带有wget这个命令。这个命令有两个参数
--header:在请求的时候可以发送一个header。如果发送的header包括If-Modified-Since则服务器会判断,如果未更改则返回304,表明不用下载。
--save-headers:在下载文件的开头部分存储响应头。
特别注意:
在保存的文件中的header中(第4行)有一个回车换行符一定要处理,windows平台的回车换行(^M)的输入方法是按住CTRL+v,松开v,按m。这个困扰了很久,大家一定要注意了
代码及说明:
#!/bin/bash #下载文件实际存放地址 fullfile='/home/pplive/squidFiles/full.txt' #下载文件临时存放地址 tempfull='/home/pplive/squidFiles/temp/full.txt' #取出文件中存放的响应header的Modify时间 header=`head -4 $fullfile|tail -1|sed -e s/Last-Modified/If-Modified-Since/g|sed -e s/GMT^M/GMT/g` ec