shell脚本中使用wget下载文件并进行last-Modified判断

本文介绍如何利用Linux Shell脚本结合wget命令,通过If-Modified-Since头信息判断远程文件是否更新,避免不必要的大文件下载。特别提醒,处理header中的回车换行符时,Windows平台需注意^M字符。
摘要由CSDN通过智能技术生成

原创文章,转载请注明出处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
Linux系统wget是一个强大的命令行工具,用于从互联网下载文件。它在CentOS和Ubuntu这两种流行的Linux发行版都可用。首先,确保wget已经安装在你的系统。如果尚未安装,可以在CentOS使用命令`yum install wget`,而在Ubuntu使用`sudo apt-get install wget`。 参考资源链接:[Linux新手指南:yum、wget与apt-get的用法解析](https://wenku.csdn.net/doc/6401abf7cce7214c316ea248) 一旦wget安装完成,就可以使用其基本语法`wget <url>`来下载指定的文件。例如,如果你想下载一个名为example.txt的文本文件,你可以简单地运行命令`wget ***`。如果需要下载文件支持断点续传(下载过程断后可以从断点处继续下载),wget也可以处理这种情况。 此外,wget还支持多种参数,如`-O`用于指定下载文件的保存名称,`-c`用于继续未完成的下载。例如,如果你想将文件保存为localname.txt,可以使用命令`wget -O localname.txt ***`。如果下载过程网络连接断开,可以再次运行相同的命令,wget将自动从上次断的位置继续下载。 在使用wget下载文件时,你还可以通过`-q`参数来关闭下载过程的输出信息,或者使用`-b`参数让wget在后台运行。 为了更深入地了解wget的高级用法以及其他Linux软件管理工具yum和apt-get的详细信息,我推荐你阅读《Linux新手指南:yum、wget与apt-get的用法解析》。这本指南将为你提供全面的了解,包括如何解决安装和使用过程可能遇到的问题,帮助你更加高效地管理和维护Linux系统上的软件包。 参考资源链接:[Linux新手指南:yum、wget与apt-get的用法解析](https://wenku.csdn.net/doc/6401abf7cce7214c316ea248)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值