Linux shell ftp命令下載檔案 根據檔案日期,

來源:互聯網
上載者:User

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

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.