`
zhouzaibao
  • 浏览: 294118 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

阅读更多

原创文章,转载请注明出处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`
echo $header
#下载文件
/usr/bin/wget -t 3 -O $tempfull --header="$header" --save-headers http://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

 

0
0
分享到:
评论

相关推荐

    wget-1.14-18.el7-6.1.x86-64.rpm

    使用Centos 7.6的wget文件 下载后使用rpm -ivh wget-1.14-18.el7-6.1.x86-64.rpm进行安装

    wget-1.11.4-1-setup

    wget-1.11.4-1-setup,安装完成后,把安装目录下面bin路径添加到系统环境变量里。 wget -c -r -np -k -L -p www.oldlinux.org/Linux.old/

    自动下载并保存GFS数据的Shell脚本

    标题中的“自动下载并保存GFS数据的Shell脚本”是指使用Linux的Shell脚本语言编写的一个程序,这个程序能够自动化地从网络上获取全球预报系统(Global Forecast System,简称GFS)的气象数据,并将其存储到本地或者...

    php-wget 把远程文件下载到本地服务器上。

    当我们需要在PHP脚本中实现自动化下载任务时,可以调用shell命令来执行`wget`。 ### PHP调用WGET 1. **使用`exec()`函数**:在PHP中,我们可以使用`exec()`函数来执行系统命令,包括`wget`。例如,下面的代码会...

    linux shell 脚本攻略里用来下载链接图片的脚本,附上整本书脚本打包

    在这个特定的案例中,`img_downloader.sh` 是一个用于批量下载网页中链接的图片的shell脚本,这在处理需要大量图片资源的项目时非常有用。下面我们将深入探讨这个脚本可能包含的知识点,并解释如何使用它。 首先,`...

    wget-1.19.2.tar

    wget-1.19.2.tar wget-1.19.2.tar wget-1.19.2.tar wget-1.19.2.tar wget-1.19.2.tar wget-1.19.2.tar

    wget-1.20.3离线安装包.zip

    wget是Linux系统中一个强大的命令行工具,用于从互联网上下载文件。它的全名是“World Wide Web Get”,顾名思义,它可以从万维网上抓取文件,无论是单个文件还是整个网站。wget以其非交互式、后台运行以及断点续传...

    下载工具wget-1.10.2+yum-3.2.3+yum-3.4.3

    wget 是一个从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三个最常见的 TCP/IP协议 下载,并可以使用 HTTP 代理。Yum是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,...

    wget-1.14-15.el7.x86_64.rpm

    `wget-1.14-15.el7.x86_64.rpm` 是一个针对Linux系统...通过安装`wget-1.14-15.el7.x86_64.rpm`,用户可以在没有图形界面的Linux服务器上方便地下载文件,执行自动化脚本,或者在无法使用其他下载工具时作为备选方案。

    wget-3.2-py3-none-any.whl

    文件格式:whl安装步骤:切换到whl路径执行pip install [whl文件名]注意whl对应python版本

    linux命令行模式使用wget下载JDK

    linux命令行模式使用wget下载JDK 版本 jdk-8u60-linux-x64.tar.gz

    wget-1.12-1.4.el6.x86_64.rpm.zip

    2. 升级:如果系统中已有一个旧版本的wget,可以使用`rpm -Uvh wget-1.12-1.4.el6.x86_64.rpm`进行升级。 3. 查询:`rpm -q wget` 查看wget是否已经安装。 4. 卸载:`rpm -e wget` 删除已经安装的wget。 标签 "rpm...

    shell 脚本 实例 shell 脚本 实例

    在IT行业中,Shell脚本是一种极其重要的自动化工具,特别是在Linux和Unix系统中。Shell脚本允许用户通过编写简单的命令序列来执行复杂的任务,极大地提高了工作效率。以下是对"shell 脚本 实例"这一主题的详细说明。...

    使用wget命令从清华源下载anaconda的安装脚本,结果返回403错误,无法下载。_-wget-403.zip

    使用wget命令从清华源下载anaconda的安装脚本,结果返回403错误,无法下载。_-wget-403

    wget 手册 -来自wiki网站的精华

    `wget` 作为一款功能全面的命令行下载工具,不仅支持基本的文件下载,还能应对复杂的递归下载需求。其灵活的配置选项使得用户可以根据实际需求定制下载策略,包括但不限于续传、代理配置、文件类型过滤等。无论是...

    短信验证码注册登录Shell - Httpie.sh、Shell - wget.sh文件.zip

    脚本会处理这个请求,获取返回的验证码,并可能将其存储在环境变量或文件中,以便后续使用。 接下来,我们讨论wget.sh。Wget是另一个经典的命令行工具,主要用于从Web上下载文件。尽管它的主要功能不是发送HTTP请求...

    windows 使用wget 下载命令

    在Windows操作系统中,`wget`是一个非常有用的命令行工具,...通过这些命令和选项,你可以在Windows环境中灵活地使用`wget64`进行各种复杂的文件下载任务。记得在使用时根据实际情况调整参数,以适应不同的下载需求。

    wget 1.194 win64

    wget是Linux和Unix环境中广泛使用的命令行工具,用于从互联网上下载文件。它支持HTTP、HTTPS和FTP协议,同时还具备断点续传和通过代理服务器下载等功能。在Windows平台上,wget也有相应的版本,如"wget 1.194 win64...

    wget-1.21.1.tar.gz

    1. **非交互式操作**:`wget`可以在用户无须交互的情况下工作,这使得它非常适合在后台或通过脚本进行自动化下载任务。 2. **HTTP、HTTPS和FTP支持**:`wget`支持三种主要的互联网协议,可以下载网页、文件甚至整个...

Global site tag (gtag.js) - Google Analytics