原创文章,转载请注明出处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
分享到:
相关推荐
使用Centos 7.6的wget文件 下载后使用rpm -ivh wget-1.14-18.el7-6.1.x86-64.rpm进行安装
wget-1.11.4-1-setup,安装完成后,把安装目录下面bin路径添加到系统环境变量里。 wget -c -r -np -k -L -p www.oldlinux.org/Linux.old/
标题中的“自动下载并保存GFS数据的Shell脚本”是指使用Linux的Shell脚本语言编写的一个程序,这个程序能够自动化地从网络上获取全球预报系统(Global Forecast System,简称GFS)的气象数据,并将其存储到本地或者...
当我们需要在PHP脚本中实现自动化下载任务时,可以调用shell命令来执行`wget`。 ### PHP调用WGET 1. **使用`exec()`函数**:在PHP中,我们可以使用`exec()`函数来执行系统命令,包括`wget`。例如,下面的代码会...
在这个特定的案例中,`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是Linux系统中一个强大的命令行工具,用于从互联网上下载文件。它的全名是“World Wide Web Get”,顾名思义,它可以从万维网上抓取文件,无论是单个文件还是整个网站。wget以其非交互式、后台运行以及断点续传...
wget 是一个从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三个最常见的 TCP/IP协议 下载,并可以使用 HTTP 代理。Yum是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,...
`wget-1.14-15.el7.x86_64.rpm` 是一个针对Linux系统...通过安装`wget-1.14-15.el7.x86_64.rpm`,用户可以在没有图形界面的Linux服务器上方便地下载文件,执行自动化脚本,或者在无法使用其他下载工具时作为备选方案。
文件格式:whl安装步骤:切换到whl路径执行pip install [whl文件名]注意whl对应python版本
linux命令行模式使用wget下载JDK 版本 jdk-8u60-linux-x64.tar.gz
2. 升级:如果系统中已有一个旧版本的wget,可以使用`rpm -Uvh wget-1.12-1.4.el6.x86_64.rpm`进行升级。 3. 查询:`rpm -q wget` 查看wget是否已经安装。 4. 卸载:`rpm -e wget` 删除已经安装的wget。 标签 "rpm...
在IT行业中,Shell脚本是一种极其重要的自动化工具,特别是在Linux和Unix系统中。Shell脚本允许用户通过编写简单的命令序列来执行复杂的任务,极大地提高了工作效率。以下是对"shell 脚本 实例"这一主题的详细说明。...
使用wget命令从清华源下载anaconda的安装脚本,结果返回403错误,无法下载。_-wget-403
`wget` 作为一款功能全面的命令行下载工具,不仅支持基本的文件下载,还能应对复杂的递归下载需求。其灵活的配置选项使得用户可以根据实际需求定制下载策略,包括但不限于续传、代理配置、文件类型过滤等。无论是...
脚本会处理这个请求,获取返回的验证码,并可能将其存储在环境变量或文件中,以便后续使用。 接下来,我们讨论wget.sh。Wget是另一个经典的命令行工具,主要用于从Web上下载文件。尽管它的主要功能不是发送HTTP请求...
在Windows操作系统中,`wget`是一个非常有用的命令行工具,...通过这些命令和选项,你可以在Windows环境中灵活地使用`wget64`进行各种复杂的文件下载任务。记得在使用时根据实际情况调整参数,以适应不同的下载需求。
wget是Linux和Unix环境中广泛使用的命令行工具,用于从互联网上下载文件。它支持HTTP、HTTPS和FTP协议,同时还具备断点续传和通过代理服务器下载等功能。在Windows平台上,wget也有相应的版本,如"wget 1.194 win64...
1. **非交互式操作**:`wget`可以在用户无须交互的情况下工作,这使得它非常适合在后台或通过脚本进行自动化下载任务。 2. **HTTP、HTTPS和FTP支持**:`wget`支持三种主要的互联网协议,可以下载网页、文件甚至整个...