Linux shell ftp命令下载文件 根据文件日期
需求:ftp获取远程数据的文件,根据文件的创建时间点下载文件。 可以自行扩展根据文件的大小等其他需求。
知识点总结:
1、获取文件的时间:
ls -lrt|awk '{print $6" "$7" "$8}'
时间内容:
Sep 8 16:03
2、时间格式转换
date -d "Sep 8 16:03" +%Y%m%d%H%M
转换结果:
201709081603
3、指定文件名,正则匹配
pattern="${month}.*.dat$"
ls -lrt |awk '$9 ~ /'$pattern'/ {print $6" "$7" "$8}'
注意awk里面模式变量用' '括起来,.*为任意字符,$表示以dat结尾。pattern的内容根据需求自行设定
4、对文件时间进行比较
ls -lrt |awk '$9 ~ /'$pattern'/ {\
ctime="date -d \""$" "$" "$"\" +%Y%m%d%H%M"; \
ctime|getline filetime; if( filetime > '$checktime' ) print $ ; }
获取文件的时间,对时间进行转换,然后对转换后的时间与给定的$checktime进行比较,如果比$checkime的时间大,则显示文件名。
|getline 为执行命令获取命令执行的结果。
以上就完成了对本地文件时间进行比较的方法。接下来判断远程主机的文件时间。
5、ftp命令登录远程主机,并过滤得到要查询的文件内容
ftp_cmd(){
ftp -i -n <<!
open $ftp_ip
user $get_user $get_pwd
binary
cd ${get_dir}
lcd ${local_dir}
$*
bye
!
}
pattern="${month}.*.dat$"
files=$(ftp_cmd ls -lrt |awk '$9 ~ /'$pattern'/ {\
ctime="date -d \""$" "$" "$"\" +%Y%m%d%H%M"; \
ctime|getline filetime; if( filetime > '$checktime' ) print $ ; }'|xargs)
通过函数调用实现ftp到指定主机,cd到指定目录,通过awk获取ls -lrt的结果,然后计算时间,把大于指定时间的文件名获取到。
6、下载文件
ftp_cmd mget $files
注意:如果匹配的文件量过大,采用这种方法下载文件有bug, 可以考虑分批下载,也就是一次下载几个文件。
7、时间点校验
通常时间点信息为参数,所以要对时间点信息进行校验。这里提供一个简单的校验方法:
date -d "${time}" +%Y%m%d%H%M
if [ $? -ne ]; then
echo "time invalidate";
exit
fi
解析时间,如果失败则退出。
注意:时间精度到分的 值的格式为:'20170910 1600'
讲讲其他shell命令注意的地方:
- 自加
num=$[ $num + ];
- 为空判断
if [ "$pro"x == ""x ]; then
...
fi
如果不加x,当$pro为空的时候,会报异常
- if的多条件判断 -o
if [ "$pro"x == "$province"x -o "$pro"x == ""x ];then
...
fi
Linux shell ftp命令下载文件 根据文件日期的更多相关文章
- Linux使用Aria2命令下载BT种子/磁力/直链文件 转载
Linux使用Aria2命令下载BT种子/磁力/直链文件 博主: Rat's 发布时间:2017 年 10 月 10 日 26725 次浏览 8 条评论 1073 字数 分类:主机教程 首页 正文 分 ...
- 利用windows系统ftp命令编写的BAT文件上传[转]
利用windows系统ftp命令编写的BAT文件上传[转] 利用windows系统ftp命令编写的BAT文件上传[转] 在开发中往往需要将本地的程序上传到服务器,而且用惯了linux命令的人来说.在w ...
- Linux下面使用命令如何运行.sh文件的两种解决办法
Linux下面用命令如何运行.sh文件的方法,有两种方法: 一.直接./加上文件名.sh,如运行hello.sh为./hello.sh[hello.sh必须有x权限] 二.直接sh 加上文件名.sh, ...
- Linux shell 中提取zip或jar文件中的某个文件
Linux shell 中提取zip或jar文件中的某个文件 假如有个压缩包 abc.jar, 里面文件如下 (可以用unzip -l abc.jar 查看): data/1.txt data/2.t ...
- linux:使用comm命令比较两个文件:交集、差
linux:使用comm命令比较两个文件:交集.差 comm命令可以按行比较两个排序好的文件,输出有3列:第一列是file1独有的.第二列是file2独有的,第三列是两者都有的,简单语法如下:NAME ...
- Linux shell tr 命令详解
该随笔摘自 https://www.jb51.net/article/103892.htm Linux shell tr 命令详解 1. 用途 tr,translate的简写,主要用于压缩重复字符,删 ...
- python文件读写操作与linux shell变量命令交互执行
python对文件的读写还是挺方便的,与linux shell的交互变量需要转换一下才能用,这比较头疼! #coding=utf-8 #!/usr/bin/python import os impor ...
- ubuntu 下通过ftp命令下载文件
/*连接*/ $ ftp 192.168.180.2Connected to 192.168.180.2.Name (192.168.180.2:rivsidn): admin Password: ...
- 2.3 利用FTP服务器下载和上传文件
二.利用FTP服务器的下载文件 from ftplib import FTP from os.path import exists def getfile(file,site,dir,user=(), ...
随机推荐
- 组件化和 React
一,对组件化的理解 1,组件的封装 -视图 -数据 -变化逻辑(数据驱动视图变化) 例: import React, { Component } from 'react'; import List f ...
- MySQL高可用方案--MHA原理
简介 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是日 ...
- Oracle win32_11gR2_database在Win7下的安装与卸载
Oracle win32_11gR2_database在Win7下的安装与卸载 by:授客 QQ:1033553122 Oracle的硬件要求 在安装oracle之前,请检查一下自己的电脑硬件是否复合 ...
- MVC与单元测试实践之健身网站(八)-统计分析
统计分析模块与之前的内容相对独立,用于记录并跟踪各部位围度的变化.还需提供对所作计划的分析,辅助使计划更合理. 一 围度记录 这儿可以记录各项身体围度指标,现在包括体重在内身体上上下下基本全部提供了 ...
- @RequestMapping --注解用法详解
一.编码时我们总会发现如下变量未被使用的警告提示: 上述代码编译通过且可以运行,但每行前面的“感叹号”就严重阻碍了我们判断该行是否设置的断点了.这时我们可以在方法前添加 @SuppressWarnin ...
- C语言编程比赛WBS
- python第二十九天-----继续学习第三模块——前几天旅行去了
subprocess模块 import subprocess subprocess.getstatusoutput('dir')#接收字符串格式命令,返回元组形式,第1个元素是执行状态,第2个是命令结 ...
- windows server 2008额外域控提升为主域控
windows server 2008额外域控提升为主域控 ---图形界面操作方法 https://blog.csdn.net/tladagio/article/details/79618338 wi ...
- sql2008和sql2012混合安装后打开SQL Server 配置管理器查看出现“远程过程调用失败”0x800706be
sql2008和sql2012混合安装后打开SQL Server 配置管理器SQL Server服务出现“远程过程调用失败”0x800706be 网上很多人都说这个解决方案,通过卸载“Microsof ...
- Opengl正交矩阵 glOrthof 数学原理(转)
http://blog.sina.com.cn/s/blog_6084f588010192ug.html 在opengles1.1中设置正交矩阵只要一个函数调用就可以了:glOrthof,但是open ...