2019-02-01 07:16:30 | 作者: 思璇 | 标签: 文件,问题,服务器 | 浏览: 4178
问题场景:
最近有一个使用需求定时到服务器上下载一个文件,这个文件会依据状况进行更新,有或许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` echo $header #下载文件 /usr/bin/wget -t 3 -O $tempfull header="$header" save-headers https://60.28.216.145:8090/full.txt #下载文件存在而且文件巨细大于100则移动暂时文件到作业目录,304回来的时分有一个空文件,所以不能只做文件是否存在判别 if [ -e "$tempfull" ] [ `du -s $tempfull | awk {print $1}` -gt 100 ]; then echo dowload idip.txt echo move full.txt to work directory /bin/mv -f $tempfull $fullfile fi
RHEL 5.4 手艺装置办理 vsftpd 2.0.5csdn
Linux中交流空间和Windows下虚拟内存的差异ITeyesina