虚位以待(AD)
虚位以待(AD)
首页 > 脚本专栏 > linux shell > Linux shell ftp命令根据文件日期下载文件的方法

Linux shell ftp命令根据文件日期下载文件的方法
类别: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 ""$6" "$7" "$8"" +%Y%m%d%H%M";
    ctime|getline filetime;
    if( filetime > '$checktime' ) print $9 ;
    }

获取文件的时间,对时间进行转换,然后对转换后的时间与给定的$checktime进行比较,如果比$checkime的时间大,则显示文件名。

|getline 为执行命令获取命令执行的结果。

以上就完成了对本地文件时间进行比较的方法。接下来判断远程主机的文件时间。

5、ftp命令登录远程主机,并过滤得到要查询的文件内容

    ftp_cmd(){
    ftp -i -n <<!open $ftp_ipuser $get_user $get_pwdbinarycd ${
    get_dir}
    lcd ${
    local_dir}
    $*bye!}
    pattern="${
    month}
    .*.dat$"files=$(ftp_cmd ls -lrt |awk '$9 ~ /'$pattern'/ {
    ctime="date -d ""$6" "$7" "$8"" +%Y%m%d%H%M";
    ctime|getline filetime;
    if( filetime > '$checktime' ) print $9 ;
    }
    '|xargs)

通过函数调用实现ftp到指定主机,cd到指定目录,通过awk获取ls -lrt的结果,然后计算时间,把大于指定时间的文件名获取到。

6、下载文件

    ftp_cmd mget $files

总结

以上所述是小编给大家介绍的Linux shell ftp命令根据文件日期下载文件的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关热词搜索: linux shell ftp命令 shell ftp 下载文件