shell脚本中运用wget下载文件并进行lastITeyesina - 千亿集团

shell脚本中运用wget下载文件并进行lastITeyesina

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

 

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表千亿集团立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1

    squid更新缓存csdn

    服务器,地址
  • 2

    几个有用的开源镜像环球

    体系,探究,总结
  • 3
  • 4

    用户指令alibaba

    用户,指令,修正
  • 5

    两台linux文件复制环球

    文件,运用,地址
  • 6
  • 7
  • 8
  • 9
  • 10