Linux shell ftp按照日期去下載文件的方法

最近做項目遇到這樣的需求要求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??'$checktime'?)?print?$9?;?}'|xargs)

通過函數調用實現ftp到指定主機,cd到指定目錄,通過awk獲取ls -lrt的結果,然后計算時間,把大于指定時間的文件名獲取到。

6、下載文件

ftp_cmd?mget?$files

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享